사용자 로그인과 함께 해싱 암호를 사용하고 20 바이트 길이의 VARBINARY로 데이터베이스에 저장합니다.해시 된 암호에 액세스
이제 asp.net에서 로그인 페이지를 작성하려고합니다. 데이터베이스에서 암호 값을 가져와 사용자가 제공 한 값과 비교하는 방법은 무엇입니까? SqlDataReader를 사용하여 데이터베이스를 읽습니다.
감사합니다,
바르 토스
사용자 로그인과 함께 해싱 암호를 사용하고 20 바이트 길이의 VARBINARY로 데이터베이스에 저장합니다.해시 된 암호에 액세스
이제 asp.net에서 로그인 페이지를 작성하려고합니다. 데이터베이스에서 암호 값을 가져와 사용자가 제공 한 값과 비교하는 방법은 무엇입니까? SqlDataReader를 사용하여 데이터베이스를 읽습니다.
감사합니다,
바르 토스
당신은 데이터베이스 암호를 unhash 및 입력과 비교하지 않습니다.
입력을 해시하고이를 암호와 비교합니다. 두 개의 해시가 일치하면 암호가 인 것으로 가정합니다.
1 기술적으로 사용자가 임의로이 실제 암호와 같은 값으로 해시 암호를 입력,하지만 그 현학적 인의 수 있기 때문에, 당신의 해시 기능에 따라, 그것은,하지 않을 수도 있습니다)
해시가 초기 해시와 동일한 경우 사용자가 입력하고 db에서 검색하는 암호를 통해 해시를 만듭니다 (초기 해시를 만드는 데 사용 된 것과 동일한 알고리즘 사용). 예 예 암호가 동일한 경우
해시의 개념은 되돌릴 수없는 함수를 가지는 것입니다. -> 동일한지를 확인할 수는 있지만 입력 데이터를 결코 재구성 할 수는 없습니다.
그리고 이것은 내가하려는 일입니다. 그러나 비교를 위해 해시 된 암호로 구성된 독자 [ "password"]를 byte []로 변환하려면 어떻게해야합니까? – Bartosz
로그인하려고하는 사용자에 따라 해시를 얻을 수 있도록 일반 텍스트로 된 사용자 이름이있는 열을 포함하는 테이블에이를 저장해야합니다. 해시 된 입력을 해시 된 저장된 입력과 비교할 수 있습니다.
데이터베이스에 일반 텍스트로 저장된 사용자 이름이 있습니다. 그것의 소싱 암호를 해시하고 그것을 비교할 수없는 byte []로 변환합니다. – Bartosz
RB. 말했다, 당신은 해시 데이터베이스에서 전달 검색 할 수 있습니다. 그런 다음 사용자가 제공 한 암호를 사용하고 이전에 사용한 것과 동일한 해싱 알고리즘을 사용하여 암호를 해시합니다. 데이터베이스의 해시 코드가 사용자가 입력 한 암호의 해시 코드와 일치하면 암호가 올바른 것입니다.
그리고 이것이 내가하려는 일입니다. 그러나 비교를 위해 해시 된 암호로 구성된 독자 [ "password"]를 byte []로 변환하려면 어떻게해야합니까? – Bartosz
비슷한 질문을하십시오. 바이트로 해시를 처리하는 코드가 있습니다. http://stackoverflow.com/questions/2687196/asp-net-membership-c-sharp-how-to-compare-existing-password-hash – tranceporter
해싱 대 암호화에 대한 정보 : [암호 해싱과 암호화의 차이점] (http://stackoverflow.com/questions/326699/difference-between-hashing-a-password-and-encrypting-it?rq = 1) –
[소금] (http://en.wikipedia.org/wiki/Salt_(cryptography))을 추가하는 것을 잊지 마십시오 –