为了账号安全,请及时绑定邮箱和手机立即绑定

为什么 Php pbkdf2 输出与 golang 不同?

为什么 Php pbkdf2 输出与 golang 不同?

Go
呼啦一阵风 2022-06-13 15:48:12
我试图弄清楚这几个小时。我在 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


查看完整回答
反对 回复 2022-06-13
  • 1 回答
  • 0 关注
  • 190 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号