배경
당신은 결코 ... 정말 ... 사용자의 암호를 알아야합니다. 수신 사용자가 계정의 비밀번호를 알고 있는지 확인하기 만하면됩니다.
해시 :
강력한 해시 기능을 통해 해시 된 (단방향 암호화) 사용자 비밀번호를 저장합니다. "c # 암호화 암호"를 검색하면 많은 예제가 제공됩니다.
해시 함수가 생성하는 것에 대한 아이디어 는 온라인 SHA1 해시 작성자 를 참조하십시오 (그러나 SHA1을 해시 함수로 사용하지 말고 SHA256과 같은 강력한 것을 사용하십시오).
이제 해시 된 비밀번호는 사용자 (및 데이터베이스 도둑)가 해당 해시를 원래 비밀번호로 되돌릴 수 없어야 함을 의미합니다.
사용 방법 :
그러나 데이터베이스에 저장된이 으스스한 암호를 어떻게 사용합니까?
사용자가 로그인하면 사용자 이름과 비밀번호를 원래 텍스트로 전달합니다. 동일한 해시 코드를 사용하여 입력 한 비밀번호를 해시하여 저장된 버전을 가져옵니다.
따라서 두 개의 해시 비밀번호 (사용자 이름에 대한 데이터베이스 해시 및 입력 및 해시 비밀번호)를 비교하십시오. 해시를 비교하여 "입력 한 내용"과 "원래 사용자가 암호를 입력 한 내용"이 일치하는지 알 수 있습니다.
추가 크레딧 :
질문 : 데이터베이스가 있다면 John the Ripper와 같은 크래커를 사용하여 저장된 해시 비밀번호와 일치하는 것을 찾을 때까지 해시를 시작할 수 없습니까? (사용자가 짧고 사전 단어를 선택했기 때문에 ... 쉽습니다)
답 : 예 ... 가능합니다.
따라서 비밀번호를 '소금'해야합니다. 소금에 관한 Wikipedia 기사를 참조하십시오
참조 "어떻게 소금 해시 데이터에"C # 예제