2017-10-20 8 views
0

를 생성하지만, 다른 문자열을 생성합니다buddy.hashers 항상 내가 생성하고 내 사용자의 SQL 테이블에 대해 "hashed_password"필드를 저장 <a href="https://funcool.github.io/buddy-hashers/latest/" rel="nofollow noreferrer">buddy.hashers</a>를 사용하고 다른 해시

user=> (require '[buddy.hashers :as hashers]) 
nil 
user=> (hashers/derive "password")"bcrypt+sha512$b55166651bb4e7241f1c42342bdc1ea6$12$8328fb1e4326dc920c6aff38076156da59594b264818c922" 
user=> (hashers/derive "password" "bcrypt+sha512$cf25e31d3a64f4189a9141b8f5e11aed$12$4b07f8380378f3a885f2212cfbe0d4f0901e8971d416e41e" 
user=> (hashers/derive "password")"bcrypt+sha512$3b569dc15a8d8e74b81a2e0652bf5172$12$b2bbf343ff7d94bccbadff07b2b9629eab3dde43c039106d" 
user=> (hashers/derive "password")"bcrypt+sha512$8d4081381c95220d6b9b67eef041dd89$12$8337f9b53f6b0f32cf30c01708e2135f94c284f5e768cc66" 

이유는 무엇입니까?

UPDATE : 명시 적으로 소금 값을 지정하지 않는 한 그것은 다른 "소금"값을 매번 사용하고

(hashers/derive "password" {:salt "1f1v45642bzz1ea6" }) 

답변

3

. 관련 코드 here.

소금을 지정하지 않으면 (nonce/random-bytes 16)이 사용됩니다. 사용자 지정 소금 값을 지정하지 않는 것이 가장 좋습니다. 자세한 내용은 this Wikipedia article을 참조하십시오.

+2

중요한 것은 해시 된 암호를 다시 제공하는 것이 아니라 해시를 나중에 확인할 수 있도록 데이터베이스에 저장해야하는 다른 메타 데이터와 선택한 소금을 다시 제공한다는 것입니다. – amalloy