Chuyển đổi logic mã hóa Javascript sang PHP (Có thể là Phương pháp AES)
Aug 17 2020
Tôi đang gặp sự cố khi chuyển đổi logic mã hóa javascript sau sang PHP, không thể tìm thấy thư viện javascript này trên internet nên không có tài liệu hoặc manh mối để bắt đầu.
Có vẻ như mã hóa đang sử dụng phương thức AES nhưng thật kỳ lạ vì AES chỉ chấp nhận chuỗi đầu vào và bí mật, iv không khớp với biến s trên javascript (không phải 16bits)
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/
Cảm ơn
Trả lời
1 MichaelFehr Aug 17 2020 at 13:47
Đoạn mã sau là mã hóa / giải mã AES CBC đơn giản mà không có bất kỳ xử lý ngoại lệ thích hợp nào và chỉ dành cho mục đích giáo dục.
Tất cả các khoản tín dụng được chuyển đến @Topaco , người đã kiểm tra thuật toán & chế độ, khóa và iv.
Vui lòng không sử dụng mã này trong sản xuất vì nó sử dụng khóa tĩnh & iv!
kết quả:
* * * 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
mã:
<?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;
?>