buddy.hashers 总是生成不同的散列
buddy.hashers always generates a different hash
我正在使用 buddy.hashers 为我的用户 SQL table 生成并保存 "hashed_password" 字段,但它会生成不同的字符串:
user=> (require '[buddy.hashers :as hashers])
nil
user=> (hashers/derive "password")"bcrypt+sha512$b55166651bb4e7241f1c42342bdc1ea628fb1e4326dc920c6aff38076156da59594b264818c922"
user=> (hashers/derive "password" "bcrypt+sha512$cf25e31d3a64f4189a9141b8f5e11aedb07f8380378f3a885f2212cfbe0d4f0901e8971d416e41e"
user=> (hashers/derive "password")"bcrypt+sha512b569dc15a8d8e74b81a2e0652bf5172$b2bbf343ff7d94bccbadff07b2b9629eab3dde43c039106d"
user=> (hashers/derive "password")"bcrypt+sha512d4081381c95220d6b9b67eef041dd8937f9b53f6b0f32cf30c01708e2135f94c284f5e768cc66"
为什么?
更新:
(hashers/derive "password" {:salt "1f1v45642bzz1ea6" })
它每次都使用不同的 "salt" 值,除非您明确指定盐值。相关代码here.
如果您不指定盐,它将使用 (nonce/random-bytes 16)
。您最好不要指定自定义盐值。有关更多信息,请参阅 this Wikipedia article。
我正在使用 buddy.hashers 为我的用户 SQL table 生成并保存 "hashed_password" 字段,但它会生成不同的字符串:
user=> (require '[buddy.hashers :as hashers])
nil
user=> (hashers/derive "password")"bcrypt+sha512$b55166651bb4e7241f1c42342bdc1ea628fb1e4326dc920c6aff38076156da59594b264818c922"
user=> (hashers/derive "password" "bcrypt+sha512$cf25e31d3a64f4189a9141b8f5e11aedb07f8380378f3a885f2212cfbe0d4f0901e8971d416e41e"
user=> (hashers/derive "password")"bcrypt+sha512b569dc15a8d8e74b81a2e0652bf5172$b2bbf343ff7d94bccbadff07b2b9629eab3dde43c039106d"
user=> (hashers/derive "password")"bcrypt+sha512d4081381c95220d6b9b67eef041dd8937f9b53f6b0f32cf30c01708e2135f94c284f5e768cc66"
为什么?
更新:
(hashers/derive "password" {:salt "1f1v45642bzz1ea6" })
它每次都使用不同的 "salt" 值,除非您明确指定盐值。相关代码here.
如果您不指定盐,它将使用 (nonce/random-bytes 16)
。您最好不要指定自定义盐值。有关更多信息,请参阅 this Wikipedia article。