[java] bcrypt와 함께 소금을 보관해야합니까?

bCrypt의 javadoc 에는 비밀번호를 암호화하는 방법에 대한 다음 코드가 있습니다.

String pw_hash = BCrypt.hashpw(plain_password, BCrypt.gensalt()); 

일반 텍스트 비밀번호가 이전에 해시 된 비밀번호와 일치하는지 확인하려면 checkpw 메소드를 사용하십시오.

if (BCrypt.checkpw(candidate_password, stored_hash))
    System.out.println("It matches");
else
    System.out.println("It does not match");

이 코드 스 니펫은 무작위로 생성 된 소금이 버려짐을 나타냅니다. 이것이 사실입니까, 아니면 잘못된 코드 스 니펫입니까?



답변

솔트는 해시에 포함됩니다 (base64 스타일 형식으로 인코딩 됨).

예를 들어, 전통적인 유닉스 암호에서 솔트는 암호의 처음 두 문자로 저장되었습니다. 나머지 문자는 해시 값을 나타냅니다. 검사기 기능은 이것을 알고 해시를 당겨 소금을 다시 가져옵니다.


답변