Password-Hashing
為什麼具有相同密碼的兩個 Argon 雜湊值不同?
有人可以向我解釋 libsodium 中的 ArgonHashString 函式返回什麼(我使用的是.net 埠)。
例如,我用相同的字元串呼叫了它兩次:
var foo1 = PasswordHash.ArgonHashString("f"); var foo2 = PasswordHash.ArgonHashString("f");
我得到了完全不同的答案:
"$argon2i$v=19$m=32768,t=4,p=1$rKEPCGqfhm7zQt8c2QBhRA$7oZHFjWhHdVg/31SottxDyVM5KA9+4IBc5qD5m9DNFI\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" "$argon2i$v=19$m=32768,t=4,p=1$o8MmGW+GoaVcQvBfmPDE8A$3mHVQbZz3JuLI++MIBC4JOI+/G2oVtq75Jbqml8lbEM\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
ArgonHashString
呼叫 libsodium 函式,該函式crypto_pwhash_str
會自動生成作為結果一部分的鹽值。
此函式返回一個字元串,當給定相同的密碼時,驗證函式將認為該字元串有效。
您不必關心字元串實際包含的內容。如果只是因為預設算法和參數可以更改。但是上面的保證永遠是真實的。
但實際上,如果兩次給出相同的密碼,字元串會有所不同。它包含一些隨機性,因此通過觀察使用者數據庫的散列密碼,您無法判斷 user1 和 user2 共享相同的密碼。