建议使用
mhash
函数从字符串创建密钥。
但是introduction of the mhash
手册说:
注意:此扩展程序已被Hash淘汰。
然而,我能找到的对于相当有用的mhash_keygen_s2k()
函数最接近的是hash_pbkdf2()
函数。但是,我甚至不确定它是否适合这项工作,因为它只存在于SVN中。
那么,我可以依赖mhash
扩展名,还是最终会被弃用和删除?如果是这样,是否有其他内置函数或我是否必须自己实现Salted S2K算法?
答案 0 :(得分:0)
我最终偷看了将其移植到PHP的mhash源代码:
function keygen_s2k($hash, $password, $salt, $bytes)
{
$result = false;
if (extension_loaded('hash') === true)
{
foreach (range(0, ceil($bytes / strlen(hash($hash, null, true))) - 1) as $i)
{
$result .= hash($hash, str_repeat("\0", $i) . str_pad(substr($salt, 0, 8), 8, "\0", STR_PAD_RIGHT) . $password, true);
}
$result = substr($result, 0, intval($bytes));
}
return $result;
}
如果有人知道任何其他内置功能,我仍然希望听到它。