2015-04-03 73 views
1

我想將我的系統從pear/Crypt/Blowfish遷移到phpseclib/Crypt/Blowfish庫。Crypt_Blowfish向後兼容性從梨到phpseclib

我需要有一個完全向後兼容性。那麼,這兩個庫有什麼區別?

我發現in this link「PEAR的Crypt_Blowfish默認使用ECB,而phpseclib使用CBC」。

因此,我配置phpseclib與ECB一起工作,但仍然是兩個庫之間的差異。哪一個 ?

回答

2

最後,我發現瞭解決方案:

默認情況下,梨隱窩包使用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);