Crypt_Blowfish向后兼容性从梨到phpseclib
问题描述:
我想将我的系统从pear/Crypt/Blowfish
迁移到phpseclib/Crypt/Blowfish
库。Crypt_Blowfish向后兼容性从梨到phpseclib
我需要有一个完全向后兼容性。那么,这两个库有什么区别?
我发现in this link“PEAR的Crypt_Blowfish默认使用ECB,而phpseclib使用CBC”。
因此,我配置phpseclib与ECB一起工作,但仍然是两个库之间的差异。哪一个 ?
答
最后,我发现了解决方案:
默认情况下,梨隐窝包使用chr(0)
到填充字符串至极不具有图8(块大小)的长度的倍数。但是,phpseclib使用整数。
这里是解决方案:
$crypt = new Crypt_Blowfish(CRYPT_MODE_ECB);
$crypt->setKey('mysecretkey');
$crypt->disablePadding();
// You must padding your input here with chr(0),
// to put your input length to a multiple of 8
$block_size = 8;
$pad = $block_size - (strlen($text) % $block_size);
$text = str_pad($text, strlen($text) + $pad, chr(0));
$encrypted = $crypt->encrypt($text);