海底 pbkdf2 哈希 php
seafile pbkdf2 hash php
我正在尝试为用户每次需要登录我的 Seafile 服务器时生成一个随机密码。
海底用途:
- 带 SHA256 的 PBKDF2
- 10000 次迭代
- 32 字节盐
我使用的代码是这样的:
<?php
$salt = random_bytes(32);
$salt = bin2hex($salt);
$iterations = 10000;
echo "GENERATED SALT: " . $salt . "<br>" . "<br>";
$hash = hash_pbkdf2 ("sha256" , "weirdone" , $salt , $iterations);
echo "GENERATED HASH: " . $hash . "<br>" . "<br>";
echo "FINAL RESULT: PBKDF2SHA256$" . $iterations . "$" . $salt . "$" . $hash . "<br>" . "<br>";
?>
问题是即使使用相同的盐,我也会得到不同的输出
示例:
SALT: 09d095a396852b525ce7f5408fe7d314a2632a19bfc8c495c8e79bd4e6aebfed
PASSWORD: weirdone
seafile output:
PBKDF2SHA256000d095a396852b525ce7f5408fe7d314a2632a19bfc8c495c8e79bd4e6aebfed145c60802f1fdce581a550b5e23f8027ba6ff0720c81f2efaa73025bd465ca
my output:
PBKDF2SHA256000d095a396852b525ce7f5408fe7d314a2632a19bfc8c495c8e79bd4e6aebfed[=12=]7c599ba2d0076e19589bb90303155efa2df8a2f6b49d845902c075bc5f5492
如果算法、salt、密码和迭代相同,为什么它们不匹配?
目标是生成新密码,将其插入数据库并将其提供给用户以便他可以登录。
谢谢
您正在传递十六进制编码的 $salt,需要将原始字节 $salt 传递给 hash_pbkdf2()。
我正在尝试为用户每次需要登录我的 Seafile 服务器时生成一个随机密码。 海底用途: - 带 SHA256 的 PBKDF2 - 10000 次迭代 - 32 字节盐
我使用的代码是这样的:
<?php
$salt = random_bytes(32);
$salt = bin2hex($salt);
$iterations = 10000;
echo "GENERATED SALT: " . $salt . "<br>" . "<br>";
$hash = hash_pbkdf2 ("sha256" , "weirdone" , $salt , $iterations);
echo "GENERATED HASH: " . $hash . "<br>" . "<br>";
echo "FINAL RESULT: PBKDF2SHA256$" . $iterations . "$" . $salt . "$" . $hash . "<br>" . "<br>";
?>
问题是即使使用相同的盐,我也会得到不同的输出 示例:
SALT: 09d095a396852b525ce7f5408fe7d314a2632a19bfc8c495c8e79bd4e6aebfed
PASSWORD: weirdone
seafile output:
PBKDF2SHA256000d095a396852b525ce7f5408fe7d314a2632a19bfc8c495c8e79bd4e6aebfed145c60802f1fdce581a550b5e23f8027ba6ff0720c81f2efaa73025bd465ca
my output:
PBKDF2SHA256000d095a396852b525ce7f5408fe7d314a2632a19bfc8c495c8e79bd4e6aebfed[=12=]7c599ba2d0076e19589bb90303155efa2df8a2f6b49d845902c075bc5f5492
如果算法、salt、密码和迭代相同,为什么它们不匹配?
目标是生成新密码,将其插入数据库并将其提供给用户以便他可以登录。
谢谢
您正在传递十六进制编码的 $salt,需要将原始字节 $salt 传递给 hash_pbkdf2()。