Crypt_Blowfish从pear到phpseclib的向后兼容性

时间:2015-04-03 09:24:52

标签: php pear phpseclib blowfish crypt

我想将我的系统从pear/Crypt/Blowfish迁移到phpseclib/Crypt/Blowfish lib。

我需要完全向后兼容。那么,这两个库之间有什么区别?

我发现in this link" PEAR的Crypt_Blowfish默认使用ECB,而phpseclib使用CBC"。

所以我将phpseclib配置为与ECB一起使用,但两个库之间仍然存在差异。哪一个?

1 个答案:

答案 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);