Задать вопрос
aaadddminnn
@aaadddminnn
php it ubuntu debian

Насколько это эффективно?

Привет. Оговорюсь сразу о том что на функцию наткнулся случайно.

$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)
  • Вопрос задан
  • 302 просмотра
Подписаться 1 Оценить Комментировать
Решения вопроса 1
miraage
@miraage
Старый прогер
bcrypt в помощь.

// EDIT

Крайне неэффективно.

// EDIT2

Генерация случайной строки (вместо вашей функции salt, длину отрегулируйте):

bin2hex(openssl_random_pseudo_bytes(21));
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@dmitryKovalskiy
программист средней руки
Я не криптолог, но помоему это бешеный overhead. Лучше алгоритм засолки похитрее сделайте.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы