我正在尝试在使用 Horde/phpmyadmin blowfish.php library加密的应用程序之间传递数据,而不是使用mcrypt
。如果我这样做:
$key = "qwerty";
$data = "12345678";
$pma_cipher = new Horde_Cipher_blowfish;
print base64_encode( mcrypt_encrypt( MCRYPT_BLOWFISH, $key, $data, MCRYPT_MODE_CBC ) );
print PMA_blowfish_encrypt( $data, $key );
print base64_encode( $pma_cipher->encryptBlock( $data, $key ) );
print base64_encode( $pma_cipher->encryptBlock( $data, $key ) );
输出是
pC+XbHWnqIg= // mcrypt
pC+XbHWnqIg= // PMA blowfish
pC+XbHWnqIg= // OK
WwkIWeYzlHw= // next block is different
此外,如果我更改数据:
$key = "qwerty";
$data = "123456789";
$pma_cipher = new Horde_Cipher_blowfish;
print base64_encode(mcrypt_encrypt(MCRYPT_BLOWFISH, $key, $data, MCRYPT_MODE_CBC));
print PMA_blowfish_encrypt( $data, $key );
我现在得到:
pC+XbHWnqIjaCTiQlKkXRQ==
pC+XbHWnqIg99GXjyWLMmA==
Horde/PMA 版本似乎每个区块都在更改密钥。
有没有办法调整 mcrypt 调用以使两个库交叉兼容,或者我应该选择一个或另一个并相应地进行调整?