2012-09-13 3 views
1

사용자 로그인과 함께 해싱 암호를 사용하고 20 바이트 길이의 VARBINARY로 데이터베이스에 저장합니다.해시 된 암호에 액세스

이제 asp.net에서 로그인 페이지를 작성하려고합니다. 데이터베이스에서 암호 값을 가져와 사용자가 제공 한 값과 비교하는 방법은 무엇입니까? SqlDataReader를 사용하여 데이터베이스를 읽습니다.

감사합니다,

바르 토스

+0

해싱 대 암호화에 대한 정보 : [암호 해싱과 암호화의 차이점] (http://stackoverflow.com/questions/326699/difference-between-hashing-a-password-and-encrypting-it?rq = 1) –

+1

[소금] (http://en.wikipedia.org/wiki/Salt_(cryptography))을 추가하는 것을 잊지 마십시오 –

답변

0

당신은 데이터베이스 암호를 unhash 및 입력과 비교하지 않습니다.

입력을 해시하고이를 암호와 비교합니다. 두 개의 해시가 일치하면 암호가 인 것으로 가정합니다.

1 기술적으로 사용자가 임의로이 실제 암호와 같은 값으로 해시 암호를 입력,하지만 그 현학적 인의 수 있기 때문에, 당신의 해시 기능에 따라, 그것은,하지 않을 수도 있습니다)

+0

그리고 이것이 내가하려는 일입니다. 그러나 비교를 위해 해시 된 암호로 구성된 독자 [ "password"]를 byte []로 변환하려면 어떻게해야합니까? – Bartosz

+0

(Byte []) reader [ "usrPassword"] 내가 찾고있는 곳. 어쨌든 고마워요 – Bartosz

0

해시가 초기 해시와 동일한 경우 사용자가 입력하고 db에서 검색하는 암호를 통해 해시를 만듭니다 (초기 해시를 만드는 데 사용 된 것과 동일한 알고리즘 사용). 예 예 암호가 동일한 경우

해시의 개념은 되돌릴 수없는 함수를 가지는 것입니다. -> 동일한지를 확인할 수는 있지만 입력 데이터를 결코 재구성 할 수는 없습니다.

+0

그리고 이것은 내가하려는 일입니다. 그러나 비교를 위해 해시 된 암호로 구성된 독자 [ "password"]를 byte []로 변환하려면 어떻게해야합니까? – Bartosz

1

로그인하려고하는 사용자에 따라 해시를 얻을 수 있도록 일반 텍스트로 된 사용자 이름이있는 열을 포함하는 테이블에이를 저장해야합니다. 해시 된 입력을 해시 된 저장된 입력과 비교할 수 있습니다.

+0

데이터베이스에 일반 텍스트로 저장된 사용자 이름이 있습니다. 그것의 소싱 암호를 해시하고 그것을 비교할 수없는 byte []로 변환합니다. – Bartosz

0

RB. 말했다, 당신은 해시 데이터베이스에서 전달 검색 할 수 있습니다. 그런 다음 사용자가 제공 한 암호를 사용하고 이전에 사용한 것과 동일한 해싱 알고리즘을 사용하여 암호를 해시합니다. 데이터베이스의 해시 코드가 사용자가 입력 한 암호의 해시 코드와 일치하면 암호가 올바른 것입니다.

+0

그리고 이것이 내가하려는 일입니다. 그러나 비교를 위해 해시 된 암호로 구성된 독자 [ "password"]를 byte []로 변환하려면 어떻게해야합니까? – Bartosz

+0

비슷한 질문을하십시오. 바이트로 해시를 처리하는 코드가 있습니다. http://stackoverflow.com/questions/2687196/asp-net-membership-c-sharp-how-to-compare-existing-password-hash – tranceporter

관련 문제