建议使用
mhash
函数从字符串创建密钥。
但是手册的介绍mhash
说:
注意:此扩展已被 Hash 淘汰。
然而,我能找到的最接近这个相当有用mhash_keygen_s2k()
的功能的是hash_pbkdf2()
函数。但是,我什至不确定它是否适合这份工作,因为它只存在于 SVN 中。
那么,我可以依赖mhash
扩展,否则它最终会被弃用和丢弃?如果是这样,是否有任何替代的内置函数或者我必须自己实现 Salted S2K 算法?
建议使用
mhash
函数从字符串创建密钥。
但是手册的介绍mhash
说:
注意:此扩展已被 Hash 淘汰。
然而,我能找到的最接近这个相当有用mhash_keygen_s2k()
的功能的是hash_pbkdf2()
函数。但是,我什至不确定它是否适合这份工作,因为它只存在于 SVN 中。
那么,我可以依赖mhash
扩展,否则它最终会被弃用和丢弃?如果是这样,是否有任何替代的内置函数或者我必须自己实现 Salted S2K 算法?
我最终窥视了将其移植到 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;
}
如果有人知道任何替代的内置功能,我仍然想听听。