Альтернатива 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;
}
Если кто-нибудь знает какую-либо альтернативную встроенную функцию, я все равно хотел бы услышать об этом.