Clojure buddy.hasher始终生成不同的哈希

Clojure buddy.hasher始终生成不同的哈希,clojure,clojurescript,Clojure,Clojurescript,我使用生成并保存用户SQL表的“hashd_password”字段,但它会生成不同的字符串: user=> (require '[buddy.hashers :as hashers]) nil user=> (hashers/derive "password")"bcrypt+sha512$b55166651bb4e7241f1c42342bdc1ea6$12$8328fb1e4326dc920c6aff38076156da59594b264818c922" user=>

我使用生成并保存用户SQL表的“hashd_password”字段,但它会生成不同的字符串:

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"
为什么?

更新

(hashers/derive "password" {:salt "1f1v45642bzz1ea6" })
它每次都使用不同的“salt”值,除非您明确指定salt值。相关代码


如果不指定salt,它将使用
(nonce/random bytes 16)
。最好不要指定自定义的salt值。请参阅以了解更多信息。

重要的是,根据该链接,它不仅返回哈希密码:它还返回它选择的salt,以及您应该存储在数据库中的其他元数据,以便以后能够检查哈希。