Имитировать CRYPT_BLOWFISH с MCRYPT_BLOWFISH - PullRequest
1 голос
/ 01 июля 2011

Мой вопрос: как получить от mcrypt тот же результат, что и от crypt, относительно blowfish?

Я хочу использовать инфраструктуру phpass для хеширования и проверки пароля. Который работает очень хорошо, если у вас есть PHP 5.3, потому что blowfish включен в crypt(). Мой хост работает под управлением PHP 5.2.x с библиотекой mcrypt.

Проходя по документам и поиском в blowfish с помощью crypt, получается, что результатом будет '$a2$', двухсимвольное значение итерации, '$', соль (дополненная или сокращенная до 22 символов), затем строка 32 base64 представляющий хеш.

Моя проблема в том, что я не могу найти объяснения MCRYPT_MODE_modenames, которое имеет для меня смысл. И как мне набрать mcrypt() количество итераций, которое я хочу? Или две функции используют разные формы раздува, которые не пересекаются?

1 Ответ

4 голосов
/ 16 июля 2011

Mcrypt и crypt () - две совершенно разные функции. Mcrypt - двустороннее шифрование, тогда как crypt - одностороннее шифрование. Насколько я знаю, crypt () находится внутри php 5.2. Кроме того, если бы я был тобой, я бы просто ссылался на сам crypt (). И я бы также использовал bcrypt из него.

 $hashed_password=crypt($password_to_be_hashed,'$2a$04$saltstringhere');

Наконец, просто измените двухзначный коэффициент стоимости внутри двух цифр после $ 2a $. Это позволит вам изменить количество процессорного времени, которое потребуется для этого. Помните, что это идет вверх логарифмически (если я правильно помню). Значением по умолчанию является 07.

Наконец, crypt_blowfish - это двусторонний алгоритм шифрования Blowfish, который принимает ключи длиной до 448 бит. Blowry внутри крипты - bcrypt, основан на blowfish, но был разработан для хранения паролей при их хешировании. Это называется односторонним шифрованием.

...