Альтернатива mhash_keygen_s2k()

mcrypt_encrypt Страница руководства говорит, что:

Рекомендуется использовать mhash функции для создания ключа из строки.

Но введение mhash Руководство говорит, что:

Примечание. Это расширение устарело в Hash.

Тем не менее, самое близкое, что я мог найти, это довольно полезное mhash_keygen_s2k() функция была hash_pbkdf2() функция. Однако я даже не уверен, подходит ли он для этой работы, поскольку он существует только в SVN.

Итак, могу ли я положиться на mhash продление или оно со временем станет устаревшим и отброшено? Если да, есть ли альтернативная встроенная функция или мне нужно самому реализовывать алгоритм Salted S2K?

1 ответ

Решение

В итоге я заглянул в исходный код mhash, портировав его на PHP:

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

Если кто-нибудь знает какую-либо альтернативную встроенную функцию, я все равно хотел бы услышать об этом.

Другие вопросы по тегам