자바 스크립트 암호화 로직을 PHP로 변환 (아마 AES 방식)

Aug 17 2020

다음 자바 스크립트 암호화 논리를 PHP로 변환하는 데 문제가 있습니다.이 자바 스크립트 라이브러리는 인터넷에서 찾을 수 없으므로 문서 또는 시작 위치에 대한 단서가 없습니다.

암호화가 AES 방법을 사용하는 것 같지만 AES가 입력 문자열과 비밀 만 허용하기 때문에 이상하고 iv는 자바 스크립트 의 변수 s 와 일치하지 않았습니다 (16 비트 아님).

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/

감사

답변

1 MichaelFehr Aug 17 2020 at 13:47

다음 코드는 적절한 예외 처리없이 교육용으로 만 사용되는 간단한 AES CBC 암호화 / 복호화 입니다.

모든 크레딧 은 알고리즘 및 모드, 키 및 iv를 검토 한 @Topaco이동합니다 .

이 코드는 정적 키 및 iv를 사용하므로 프로덕션에서 사용하지 마십시오!

결과:

* * * 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

암호:

<?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;
?>