Convertir la logique de cryptage Javascript en PHP (probablement méthode AES)

Aug 17 2020

J'ai un problème pour convertir la logique de cryptage javascript suivante en PHP, cette bibliothèque javascript ne peut pas être trouvée sur Internet donc il n'y a pas de documentation ou d'indice par où commencer.

Il semble que le cryptage utilise la méthode AES mais c'est étrange car AES n'accepte que la chaîne d'entrée et le secret, l'iv ne correspond pas à la variable s sur le javascript (pas 16 bits)

function doCheckR() {
  var string= "10000395351475";
  console.log("this is plain processing of string :  "+string);
  var a = ManualJS.jun.Des.parse("79540e250fdb16afac03e19c46dbdeb3"),
    s = ManualJS.jun.Des.parse("eb2bb9425e81ffa942522e4414e95bd0"),
    result = ManualJS.MDX.goinstring(string, a, {
        ii: s
    });
    console.log("this is a :  "+a);
    console.log("this is s :  "+s);
    console.log("this is result :  "+result);
  result = result.rabbittext.toString(ManualJS.jun.Text21);
  console.log("final result for urlencoded :  "+encodeURIComponent(result));
}

https://jsfiddle.net/8swegkv6/3/

Merci

Réponses

1 MichaelFehr Aug 17 2020 at 13:47

Le code suivant est un simple cryptage / décryptage AES CBC sans traitement d'exception approprié et à des fins éducatives uniquement.

Tous les crédits vont à @Topaco qui a examiné l'algorithme et le mode, la clé et iv.

Veuillez ne pas utiliser ce code en production car il utilise la clé statique & iv!

résultat:

* * * encryption * * *
ciphertext:      lOv3As5iF/wk/1LYB+68gw==
result urlencod: lOv3As5iF%2Fwk%2F1LYB%2B68gw%3D%3D
result expected: lOv3As5iF%2Fwk%2F1LYB%2B68gw%3D%3D
* * * decryption * * *
decryptedtext: 10000395351475
string       : 10000395351475

code:

<?php
echo 'https://stackoverflow.com/questions/63447664/convert-javascript-encryption-logic-to-php-probably-aes-method' . PHP_EOL;
$string = "10000395351475"; $aKey = "79540e250fdb16afac03e19c46dbdeb3";
$sIv = "eb2bb9425e81ffa942522e4414e95bd0"; // encryption echo '* * * encryption * * *' . PHP_EOL; $ciphertext = openssl_encrypt($string, "aes-128-cbc", hex2bin($aKey), 0, hex2bin($sIv)); echo 'ciphertext: ' . $ciphertext . PHP_EOL;
$ciphertextUrlencoded = urlencode($ciphertext);
echo 'result urlencod: ' . $ciphertextUrlencoded . PHP_EOL; echo 'result expected: ' . 'lOv3As5iF%2Fwk%2F1LYB%2B68gw%3D%3D' . PHP_EOL; // decryption echo '* * * decryption * * *' . PHP_EOL; $decryptedtext = openssl_decrypt(urldecode($ciphertextUrlencoded), "aes-128-cbc", hex2bin($aKey), 0, hex2bin($sIv)); echo 'decryptedtext: ' . $decryptedtext . PHP_EOL;
echo 'string       : ' . $string . PHP_EOL;
?>