我正在尝试在 Javascript 中加密并在 Python/Django 中解密相同的数据。
免责声明:不是生产级代码,而是学习概念
我通过 Diffie Hellman(使用 jQuery 的 Ajax)生成一个密钥,然后将其传递给下面的 encrypt 函数。输入一般是 JSON 格式的 ID 和密码。
这就是加密发生的方式。{在某处找到代码。}
function toWordArray(str){
return CryptoJS.enc.Utf8.parse(str);
}
function toString(words){
return CryptoJS.enc.Utf8.stringify(words);
}
function toBase64String(words){
return CryptoJS.enc.Base64.stringify(words);
}
function encrypt(input, key){
console.log("Input: " + input);
var PROTOCOL_AES256 = 2;
var secret_key = CryptoJS.SHA256(key);
var header = toWordArray("AMAZON" + String.fromCharCode(PROTOCOL_AES256));
var iv = CryptoJS.lib.WordArray.random(16);
var body = CryptoJS.AES.encrypt(input, secret_key, {iv: iv});
// construct the packet
// HEADER + IV + BODY
header.concat(iv);
header.concat(body.ciphertext);
console.log("Bytes before Base64 encoding: " + header); //Line 1
// encode in base64
return toBase64String(header);
}
我希望第 1 行和第 2 行的输出相等,但这就是我得到的:
Javascript Bytes before Base64 encoding: 414d415a4f4e02e8ec9b8a949eb754e305acfbe5207f1ebe75272c18146bca57ce399928c0ffd7e506d90e11b011da42b1bd8d2393ec59cc926cef33c2121da3f48dfd59925138 signin:67:25
Python Encrypted string decoded: b"AMAZON\x02\xcb0\xb5~ \xbf<\x96\x16\x0eJY@\x88\xfe\x94\xc28\xf2j\x19n\x8f\x8d\xdb\xb6yc\x89-L\x93\xa3\x9f\xc3i\xd5\xf4e4'|\xa1\x1f\x9d\xb9k\x95O\xb9<\xc3\xa0\xd7\xa6B^\x85+SSToe"
你能解释一下发生了什么吗?如何获得与javascript相同的字符串?或如何将 Python 中的字符串转换为可解密的(?)数据。
繁星点点滴滴
相关分类