3
PHP 5.2.9(32ビットLinux OS)で対称鍵暗号化(blowfish)を使用して文字列を暗号化しようとしています。 (内部モードで実行されている)phpseclib 1.0.3、私はそれは非常に簡単です使用しているサンプルコード:32ビットLinux OSでPHP 5.2.9でBlowfish対称鍵の暗号化が正しく行われない
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 OSです)。
ad7145c675b1c914bbfe379dc7293bf3
PHP 5.2.9の出力が間違っているとします。これの原因は何でしょうか?すべての手がかりは?
、[OK]を問題を修正しました: 'ます$ this-> bctx [ 'P '] [] = $ this-> parray [$ i]^$ data'です。 明らかに、このXORビット演算子(^)は、値とOSの種類(32Bitまたは64Bit)によって異なる結果を返します。 たとえば、次のコード: '$ a = 2242054355; $ b = 1701195825; $結果= $ a^$ b; echo $ result; ' 32ビットシステムで-523945758を返します.64ビットシステムでは3771021538を返します。だから、問題はPHPのバージョンではなく、OSのタイプに関連しているように見えます(後でタイトルを編集します)。 – Romualdo
https://github.com/phpseclib/phpseclib/issues/1038 – neubert
も参照してください。うわーは魅力的です。ありがとうございました – Learner