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