Dies funktioniert darauf Der alte Server wurde verschoben (funktioniert auf PHP5, aber nicht Php8): < /p>
Code: Select all
$rijndael = new Crypt_Rijndael(CRYPT_RIJNDAEL_MODE_ECB);
$rijndael->setKey('akeyof32btyeslongabcdefghijklmop');
$keylen = 256;
$rijndael->setKeyLength($keylen);
$rijndael->setBlockLength($keylen);
$decrypted1 = $rijndael->decrypt($EncryptedDataOf256bytes);
< /code>
Versuchte das Upgrade auf PHPSECLIB3 mit PHP 8.2 - Die Daten wurden ebenfalls nicht wiederzuerkennen. < /p>
$rijndael1 = new \phpseclib3\Crypt\Rijndael('ecb');
$keylen = 256;
$rijndael->setKey('akeyof32btyeslongabcdefghijklmop');
$rijndael1->setKeyLength($keylen);
$rijndael1->setBlockLength($keylen);
$rijndael1->disablePadding(); // tried with and without padding,
$decrypted1 = $rijndael1->decrypt($bindata)
, wie unten vorgeschlagen, hätte einen isolierten Test dafür liefern sollen Zu mit PHPSeclib. Es war Php 8, das der Schlüsselzeichenfolge ASCII -Zeichen nicht mehr als 128 zugewiesen hatte. />function hex2str($hex)
{
$str='';
for($i=0;$isetKey('akeyof32btyeslongabcdefghijklmop');
$keylen = 256;
$rijndael->setKeyLength($keylen);
$rijndael->setBlockLength($keylen);
$decrypted1 = $rijndael->decrypt($BinData);
echo "Decrypted data\n";
echo $decrypted1;
// $decrypted result
// "ThisIsATestStringOfTheDataBeingUsedWhenItIsUnencrypted123456789012345678901233456"
< /code>
Dies funktionierte von selbst, wurde jedoch mit einem Schlüssel getestet, der Zeichen außerhalb von 0-128 hatte. Es ist fehlgeschlagen, da Sie sie in PHP5 direkt als Textzeichenfolge zuweisen konnten. Nach Php8 funktioniert dies nicht und die Schlüsselzeichenfolge musste Byte durch Byte errichtet werden. Dies gibt wahrscheinlich einen einfachen Trick, aber PHP ist nicht mein Fachgebiet.