python中的AES解密

python中的AES解密,python,encryption,cryptography,flask,pycrypto,Python,Encryption,Cryptography,Flask,Pycrypto,我使用$.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: "applicat

我使用$.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
'\x1f\x99%8\xa8\x197%\x89U\xb6\xa5\xb6C\xe0\x88'
>>> obj2 = AES.new('This is a key123', AES.MODE_CFB)
>>> obj2.decrypt(ciphertext)
'The answer is no'

它工作正常,但我想在前端使用javascript加密数据,并且我想在python中使用相同的解密技术

传递给
CryptoJS.AES.encrypt
的字符串不像Python代码那样直接用作密钥(utf8编码后),而是用作密码,以某种方式派生密钥。请参阅:


此外,输出还被编码为可打印字符的字符串,并不表示Python代码所需的原始字节字符串。请参阅:.

加密。将密文转换为字符串的错误方法是toString()。使用Base64或十六进制文本表示法,并相应地在JS和python代码中进行转换。@OlegEstekhin您能给我推荐一些工作示例吗?@OlegEstekhin我已经更新了我的问题。我阅读了这些文档,但不知道如何在javascript和python端使用它。你能给我推荐一篇好文章或是一个很好的例子吗?在更大的范围内,你想解决什么问题?听起来,通过https检索和发布您的所有数据将满足您的保密要求,并解决我认为您存在的其他一些安全问题@Jaydipsinhsee,我想加密用户提供的aws凭据,需要将加密的凭据传递到flask中的服务器,在那里我必须解密凭据。这就是我希望通过https传输凭据的目的,这将确保使用TLS的经过身份验证和加密的连接,这将比单独构建的任何连接都更好、更安全@杰迪普辛