Пакет
PEAR Crypt_Blowfish обеспечивает шифрование 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.