rpHash
rpHash — Хеширование с солью, случайными алгоритмами и заданным количеством раундов
Описание
array rpHash( string $pass [, string $algos = '' [, string $salt = '' [, int $steps = 65536 ] ] ] )
Хеширование с солью, случайными алгоритмами и заданным количеством раундов. Против перебора по словарям и радужным таблицам.
Возвращает массив, в котором содержатся полученный хеш и параметры использованные для его получения.
Время работы этой функции зависит от количества раундов steps
и аппаратных возможностей. Для steps
равного 65536 время работы может варьироваться от 200мс до 1с, что значительно затрудняет прямой перебор пароля. В случае утечки БД с хешами нет возможности произвести подбор паролей с использованием радужных таблиц, т.к. каждый хеш генерируется по своему алгоритму с использованием своей соли. Недостатком является то, что в БД необходимо хранить не только сам хеш, а еще и соль и алгоритмы.
Список параметров
pass
- Строка для хеширования
algos
- Строка с перечислением алгоритмов для хеширования. По-умолчанию "md2,md4,md5,sha1,sha224,sha256,sha384,sha512,ripemd128,ripemd160,ripemd256,whirlpool"
salt
- Соль. Если не задана, то генерируется строка из случайных символов
steps
- Количество раундов. Чем больше количество раундов, тем сложнее осуществить подбор пароля зная хеш.
Примеры
Пример 1: Начальная генерация хеша
<?php
debug_var(rpHash("123"));
/*
Array
(
[key] => 74f3cb506423a9858884f6c3c3a1f95c
[algos] => sha384,md4,sha224,ripemd256,sha1,ripemd160,md5,ripemd128,md2,whirlpool,sha512,sha256
[salt] => nAaLFfDKDODr8nEnB2BLFLpy9484MXHS
[steps] => 65536
)
*/
?>
Пример 2: Генерация хеша для проверки
<?php
$debug_code_time = microtime(1);
$pass = "123";
$algos = "sha384,md4,sha224,ripemd256,sha1,ripemd160,md5,ripemd128,md2,whirlpool,sha512,sha256";
$salt = "nAaLFfDKDODr8nEnB2BLFLpy9484MXHS";
debug_var( rpHash($pass, $algos, $salt) ); // Генерируем хеш с известными параметрами
debug_var( showtime(microtime(1) - $debug_code_time) );
/*
Array
(
[key] => 74f3cb506423a9858884f6c3c3a1f95c
[algos] => sha384,md4,sha224,ripemd256,sha1,ripemd160,md5,ripemd128,md2,whirlpool,sha512,sha256
[salt] => nAaLFfDKDODr8nEnB2BLFLpy9484MXHS
[steps] => 65536
)
461,64 msec
*/
?>
Смотрите также:
- hash — Если на хостинге отключено расширение hash
- hash_equals — Сравнивает хеш-строки с защитой от атаки по времени для php < 5.6