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 に答える