PHPSECLIB RIJNDAEL ECB 256 BIT KEY -Problem, das sich von PHP5 nach PHP8 bewegenPhp

PHP-Programmierer chatten hier
Anonymous
 PHPSECLIB RIJNDAEL ECB 256 BIT KEY -Problem, das sich von PHP5 nach PHP8 bewegen

Post by Anonymous »

eine Legacy -App, die zu Debian 11 mit PHP 8.2 festgelegt wurde (PHP 5.6, die nicht mehr zur Verwendung verfügbar sind). Die ursprüngliche Anwendung verwendete die erste Version von PHPSeclib, aber nachdem sie auf die neue PHP 8.2 -Maschine verschoben wurden, funktioniert nicht mehr, nichts im Protokoll, sie wird nur nicht wiederzuerlegende Daten nach Verschlüsselungsaufrufen zurückgegeben. < /P>
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)
Betrachten Sie PHPSECLIB3 Es scheint die Unterstützung von Rijndael ECB 256 -Bit -Tasten zu unterstützen, aber die frühere Version PHPSECLIB nicht, also nicht einmal sicher, wie es funktioniert hat. < BR /> Update: < /b> < /p>
, 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.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post