我想将我的系统从pear/Crypt/Blowfish
迁移到phpseclib/Crypt/Blowfish
lib。
我需要完全向后兼容。那么,这两个库之间有什么区别?
我发现in this link" PEAR的Crypt_Blowfish默认使用ECB,而phpseclib使用CBC"。
所以我将phpseclib配置为与ECB一起使用,但两个库之间仍然存在差异。哪一个?
答案 0 :(得分:2)
最后我找到了解决方案:
默认情况下,pear crypt包使用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);