python中的AES解密



我使用$从前端发送凭据。Ajax方法和我使用crypto.js加密凭证。

javascript代码

var encrypted = CryptoJS.AES.encrypt("Message", "This is a key123", { mode: CryptoJS.mode.CFB});
$.ajax({
        type: "POST",
        url: $SCRIPT_ROOT + "/test",
        contentType: "application/json",
        data:JSON.stringify({key:encrypted.toString()}),
        dataType: "json",
        success: function (response) {
            alert(response);
        }
    });

我想在python flask的后端解密相同的凭据。

python代码

data = request.json
key = data["key"]
obj2 = AES.new('This is a key123', AES.MODE_CFB)
s = obj2.decrypt(key)
print s

我在加密和解密时使用了相同的模式,但是print s会打印出下面的字符串。

 �Qg%��qNˮ�Ŵ�M��ĦP�
                  "~�JB���w���#]�v?W

有谁能建议我在前端做加密解密的更好方法吗? &&后端?

我只在python中尝试了相同的加密-解密,

>>> from Crypto.Cipher import AES
>>> obj = AES.new('This is a key123', AES.MODE_CFB)
>>> message = "The answer is no"
>>> ciphertext = obj.encrypt(message)
>>> ciphertext
'x1fx99%8xa8x197%x89Uxb6xa5xb6Cxe0x88'
>>> obj2 = AES.new('This is a key123', AES.MODE_CFB)
>>> obj2.decrypt(ciphertext)
'The answer is no'

它的工作很好,但我想在前端使用javascript加密数据,我想在python中使用相同的解密技术。

传递给CryptoJS.AES.encrypt的字符串不像Python代码那样直接用作密钥(在utf8编码之后),而是用作密码,以某种方式派生密钥。见:https://code.google.com/p/crypto-js/The_Cipher_Input。

此外,输出也被编码为可打印字符的字符串,而不表示Python代码所需的原始字节字符串。见:https://code.google.com/p/crypto-js/The_Cipher_Output .

相关内容

  • 没有找到相关文章

最新更新