1

mcrypt_encrypt手册页说:

建议使用mhash函数从字符串创建密钥。

但是手册的介绍mhash说:

注意:此扩展已被 Hash 淘汰。

然而,我能找到的最接近这个相当有用mhash_keygen_s2k()的功能的是hash_pbkdf2()函数。但是,我什至不确定它是否适合这份工作,因为它只存在于 SVN 中。

那么,我可以依赖mhash扩展,否则它最终会被弃用和丢弃?如果是这样,是否有任何替代的内置函数或者我必须自己实现 Salted S2K 算法?

4

1 回答 1

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;
}

如果有人知道任何替代的内置功能,我仍然想听听。

于 2012-10-09T20:57:40.960 回答