Предполагая, что Crypt_Blowfish
использует mcrypt
или действует так же, вы столкнулись с проблемой заполнения.В частности, строка дополняется правой частью нулевыми байтами, пока она не станет кратной размеру блока.Из интерактивной оболочки PHP:
php > $bf = mcrypt_module_open('blowfish', '', 'ecb', '');
php > $iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($bf), MCRYPT_DEV_RANDOM);
php > $key = 'some key';
php > mcrypt_generic_init($bf, $key, $iv);
php > echo mcrypt_enc_get_block_size($td);
8
php > echo bin2hex(mcrypt_generic($bf, 'input string'));
79af8c8ee9220bdec2d1c9cfca7b13c6
php > echo bin2hex(mcrypt_generic($td, "input string\0\0\0\0"));
79af8c8ee9220bdec2d1c9cfca7b13c6
Кажется, что не существует очевидного способа изменить режим заполнения в mcrypt
, и я не знаю, кто написалбиблиотека, которую вы используете.Проверьте режим заполнения в документации к модулю.
Если вам повезет, вы можете просто вместо этого установить режим заполнения Ruby или просто добавить нуль в строку на стороне Ruby.