Intereting Posts
Php включает в себя и изображения, не работающие для переписанных URL-адресов Настройка элемента на основе массива Zend_Form и восстановление Что означает знак процента в PHP? Блок try-catch PHP внутри цикла Как я могу заставить Android-приложение обмениваться данными с веб-сервером через Интернет? PHP – обновляющая страница и показывающая разные строки в таблице MySQL ORDER BY и while loop Установка расширения PHP Zip Загрузка файла конфигурации .user.ini PHP с использованием внутреннего сервера PHP 5.4? preg_match_all соответствует нескольким строкам и получает значения, записанные в двойных кавычках Предупреждение: mysqli_fetch_assoc () ожидает, что параметр 1 будет mysqli_result, boolean задан в .. Тогда моя строка JQuery autocomplete и PHP: заполнение поля ввода данными из базы данных mySQL на основе выбранной опции в поле автозаполнения Вручную зарегистрировать пользователя в Laravel SQL Select Query с активными записями CodeIgniter и 'where sha1' возвращает запись первой строки Многомерный массив неизвестной глубины в один размерный массив и соответствующие ключи в PHP

Хеширование PHP Bcrypt

Я хочу использовать хеширование Blowfish для хэш-пароля.

crypt() не поддерживает его в версиях PHP до 5.3

Моя версия PHP – 5.2.14. Как я могу использовать хеширование Blowfish? Могу ли я использовать Crypt_Blowfish PEAR?

PEAR Crypt_Blowfish предназначен для расширения PHP-расширения PHP – это двухсторонняя схема шифрования, а не для хэширования. Хотя bcrypt основан на Blowfish, это не одно и то же. Смутно, CRYPT_BLOWFISH PHP 5.3.0 является алгоритмом хэширования.

Есть ли причина, по которой обновление до PHP 5.3.0+ невозможно? Это не то, что вы хотите попытаться реализовать самостоятельно. Если вы можете, phpass – отличный способ безопасно использовать хэширование пароля на основе bcrypt. Если вы абсолютно не можете обновить, phpass возвращается к более старым схемам хэширования (но он еще более безопасен, чем обычный MD5 и т. Д.).

Если по какой-то причине вы можете установить Suhosin, но не обновлять PHP, это добавит поддержку CRYPT_BLOWFISH.

Чтобы убедиться, что у вас нет CRYPT_BLOWFISH, попробуйте выполнить следующее:

  echo (CRYPT_BLOWFISH === 1) ? 'CRYPT_BLOWFISH is enabled!' : 'CRYPT_BLOWFISH is not available'; 

Пакет Crypt_Blowfish PEAR обеспечивает шифрование blowfish с использованием расширения mcrypt, если оно доступно, и если оно не реализует алгоритм blowfish изначально на php. Он не возвращается к использованию любой другой формы шифрования.

Для пакета нет «рукописной» документации, хотя есть автоматическая документация API, полученная из аннотаций в самом пакете.

Вот как я использую его для шифрования:

 $bf = Crypt_Blowfish::factory('ecb', null, null, CRYPT_BLOWFISH_PHP); $iv = 'abc123+='; $key = BLOWFISH_KEY; $bf->setKey($key, $iv); $encrypted = bin2hex($bf->encrypt($password)); 

И расшифровать:

 $bf = Crypt_Blowfish::factory('ecb', null, null, CRYPT_BLOWFISH_PHP); $iv = 'abc123+='; $key = BLOWFISH_KEY; $bf->setKey($key, $iv); $decrypted = trim($bf->decrypt(hex2bin($password))); 

Где BLOWFISH_KEY – это константа, которую я определил в другом месте кода.

В этих примерах я явно использую реализацию PHP.

Если бы я хотел, чтобы Crypt_Blowfish решал, какой движок использовать, т. Е. Определить, может ли он использовать расширение mcrypt, если он доступен (и в противном случае использовать реализацию php), то я бы изменил его с помощью CRYPT_BLOWFISH_AUTO. Чтобы явно использовать расширение mcrypt, укажите CRYPT_BLOWFISH_MCRYPT.