Convertir la logique de cryptage Javascript en PHP (probablement méthode AES)
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
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;
?>