Linux使用Blowfish生成密码,错误的Blowfish在32位Linux操作系统上使用PHP 5.2.9进行对称密钥加密...

我试图使用PHP 5.2.9(在32位Linux操作系统上)使用对称密钥加密(blowfish)来加密字符串,并使用phpseclib 1.0.3(在内部模式下运行),我使用它的示例代码是相当简单:错误的Blowfish在32位Linux操作系统上使用PHP 5.2.9进行对称密钥加密

include('Crypt/Blowfish.php');

$cipher = new Crypt_Blowfish();

$data = 'abcdefghijk';

$cipher->setKey('abcdefabcdefghi9876543');

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操作系统):

ad7145c675b1c914bbfe379dc7293bf3

我想PHP 5.2.9输出是错误的。这可能是什么原因?任何线索?

2016-09-22

Romualdo

+0

好,看上去像个“地穴/ Blowfish.php” 439行该指令的一个问题: '$这个 - > bctx ['P '] [] = $ this-> parray [$ i]^$ data'。 显然这个XOR按位运算符(^)根据值和OS的类型(32Bit或64Bit)返回不同的结果。 例如,此代码: '$ a = 2242054355; $ b = 1701195825; $ result = $ a^$ b; echo $ result;' 在32位系统上返回-523945758或在64位系统上返回3771021538。所以看起来问题与操作系统的类型有关,而不是PHP的版本(我稍后会编辑标题)。 –

+0

另请参阅https://github.com/phpseclib/phpseclib/issues/1038 –

+0

哇,它像一个魅力。谢谢 –

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值