在 32 位 Linux OS 上使用 PHP 5.2.9 的错误 Blowfish 对称密钥加密

Wrong Blowfish Symmetric Key Encryption with PHP 5.2.9 on 32-bit Linux OS

我正在尝试使用 PHP 5.2.9(在 32 位 Linux OS 上)使用对称密钥加密(河豚)并使用 phpseclib 1.0 来加密字符串.3(运行 内部模式),我使用的示例代码非常简单:

include('Crypt/Blowfish.php');

$cipher = new Crypt_Blowfish();
$data = 'abcdefghijk';

$cipher->setKey('abcdef0123456789abcdefghi9876543');

echo bin2hex($cipher->encrypt($data));

生成的输出是 (PHP 5.2.9 - 32 位 Linux OS):

0e1651fc54dd530757fc1711b696dac5

但我已经在其他服务器(PHP 7.07、PHP 5.3.3、PHP 5.0.4)上尝试了相同的代码,并且它们都生成了这个(所有其中有 64 位 Linux OS):

ad7145c675b1c914bbfe379dc7293bf3

我想 PHP 5.2.9 输出是错误的。这可能是什么原因造成的?有什么线索吗?

这是一个与 32 位 Linux pre-PHP 5.3 上的 float 到 int 转换相关的问题。 phpseclib 的开发人员在 1.0.4 和 2.0.4

版本上修复了这个问题