2011-03-07 3 views
5

SqlMembershipProvider를 사용하고 암호를 해시로 저장하고 있습니다. 또한 (해시 된) 암호의 기록을 다른 테이블에 보관하고 있습니다. 나는 사용자가 자신의 암호를 변경하려고 시도한 암호를 이전 암호로 비교할 수 있기를 원하고 너무 최근의 경우 오류를 던질 수 있기를 원합니다. 나는 이것을하기 위해 해싱 함수를 사용하는 방법을 알아낼 수없는 것 같습니다. 기본적으로 내가 찾고있는 것은 다음과 같은 방법입니다 :SqlMembershipProvider가 만든 해시 된 암호와 암호 기록을 비교하려고 시도합니다.

public bool PasswordCompare(string plaintextPassword, string salt, string hashedPassword) 
{ 
    //where the salt and hashedPassword are pulled out of the aspnet_Membership table 
    //which are automatically generated by the provider 
} 

나는 이것이 분명히 희망하기를 바랍니다.

+0

이유는 단순히 사용자 아이디, 암호 및 그런 다음 마지막으로 다섯 가지를 조회 할 또 다른 기록 테이블에 현재 날짜와 시간을 기록하는 aspnet_Membership 테이블에 트리거를 넣어? – Thomas

+0

@ 토마스는 암호를 일반 텍스트로 저장하라는 제안입니까? –

+1

@Wyatt Barnett - 물론 그렇지 않습니다. 해시 (및 소금)를 로그 테이블에 저장하고 현재 해시 및 소금을 해당 목록과 비교할 수 있습니다. – Thomas

답변

2

이 게시물에 좋은 정보가 있습니다. 당신이 가지고 다음과 같습니다

... 자신의 사용자 정의 는 MembershipProvider 구현의 암호의 역사를 기록하고, 자기에 의해 비밀번호를 암호화합니다.

SQLMembershipProvider: Comparing Hashed Passwords

+0

그리고 링크가 죽었습니다 .... – Stephen