我試圖弄清楚這幾個小時。我在 PHP 和 golang 中使用了相同的 pbkdf2 算法,并且輸出有所不同。戈朗saltString := "e7655f410aa38e1ca05de7a7fd8fb84c"password := "vibhor123"salt, err := hex.DecodeString(saltString)if err != nil { panic(err)}fmt.Println(salt)fmt.Println(fmt.Sprintf("%x", pbkdf2.Key([]byte(input.Password), salt, 4096, sha256.Size, sha256.New)))輸出3d70b8536a7b26d67419e220e1c244a1cc9431a3c23999c2f993d8a3a4dda13aPHP$salt = "e7655f410aa38e1ca05de7a7fd8fb84c";$password = "vibhor123";echo(hash_pbkdf2("sha256", $password, $salt, 4096));輸出a8595b29ddb1a7819bae7e9d8809f26f053b3877197ed44e05e279459a826c64根據我的理解,兩者應該匹配。
1 回答

冉冉說
TA貢獻1877條經驗 獲得超1個贊
PHP 的hash_pbkdf2salt 必須以二進制字符串的形式呈現,而不是十六進制字符串。只需使用hex2bin將其轉換為原始二進制文件。見https://3v4l.org/IIXFM。
$salt = "e7655f410aa38e1ca05de7a7fd8fb84c";
$password = "vibhor123";
echo(hash_pbkdf2("sha256", $password, hex2bin($salt), 4096));
3d70b8536a7b26d67419e220e1c244a1cc9431a3c23999c2f993d8a3a4dda13a
- 1 回答
- 0 關注
- 175 瀏覽
添加回答
舉報
0/150
提交
取消