【发布时间】:2020-07-10 05:49:11
【问题描述】:
这是什么密码格式?
根据我的研究,它看起来像一个 64 长度 150000 次迭代 pbkdf2 sha256 加密密钥
如果我需要用 PHP 编写一些东西来创建用户,我会怎么做?
pbkdf2:sha256:150000$5gmU8sPF$fd67586ce17773c31d8b68711e11fdc2c1c9b7e183e702b039f52498742b665e
非常感谢
亨利
【问题讨论】:
这是什么密码格式?
根据我的研究,它看起来像一个 64 长度 150000 次迭代 pbkdf2 sha256 加密密钥
如果我需要用 PHP 编写一些东西来创建用户,我会怎么做?
pbkdf2:sha256:150000$5gmU8sPF$fd67586ce17773c31d8b68711e11fdc2c1c9b7e183e702b039f52498742b665e
非常感谢
亨利
【问题讨论】:
可以减少到 1-10K 迭代,而不是 150K 迭代。
/* generate 44 bytes password hash
using hash key + multiple salts
*/
function hash_password($password, $key, $salts, $iteration = 1000) {
$hash = $password;
if (is_string($salts)) {
$salts = (Object)[$key => $salts];
}
foreach ($salts as $k => $salt) {
$hash = hash_pbkdf2('sha256', $hash, $k.$salt, 1000, 0, true));
}
return base64_encode(hash_pbkdf2('sha256', $hash, $key, $iteration, 0, true));
}
/* usage:
$hash = hash_password('passw@rd', 'hashkey', (Object)[ 'gen' => 'OO7', ...]);
*/
【讨论】: