Привет. Оговорюсь сразу о том что на функцию наткнулся случайно.
$str = hash_hmac(HASH, $str, HASH_SECRET1);
for ($i = 0; $i < 100; $i++) {
$str = md5($str);
}
Я так понимаю что сначала мы хешируем $str каким то надёжным алгоритмом (допустим sha512) потом полученный хеш хешируем ещё 100 раз функцией md5 (если я правильно понял о цикле)
Заранее спасибо
PS
немножко покрутил я эту идею и написал вот такой вот класс
class security {
function salt() {
$chars = "qazxswedcvfrtgbnhyujmkiolp1234567890QAZXSWEDCVFRTGBNHYUJMKIOLP";
$max = HASH_SALT;
$size = StrLen($chars) - 1;
$salt = null;
while ($max--) {
$salt.=$chars[rand(0, $size)];
}
return $salt;
}
public function NewHash5($str) {
$salt = self::salt();
$str = hash_hmac(HASH, HASH_SECRET3 . $str . $salt, HASH_SECRET1);
for ($i = 0; $i < 100; $i++) {
$str = hash('sha1', $str);
}
for ($i = 0; $i < HASH_REKURS; $i++) {
$str = hash('whirlpool', HASH_SECRET3 . $str . $salt.HASH_SECRET2);
}
for ($i = 0; $i < 10; $i++) {
$str = hash('haval128,3', $str);
}
for ($i = 0; $i < 10; $i++) {
$str = hash('adler32', $str);
}
$return['hash'] = HASH_SECRET2 . $str;
$return['salt'] = $salt;
return $return;
}
}
Если использовать соль в 60 символов то отработка на сервере занимает 0.00152683
меряю вот таким кусочком кода
substr(microtime(true) - $_SERVER["REQUEST_TIME_FLOAT"], 0, 10)