Я отправляю учетные данные из внешнего интерфейса, используя метод $.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.
код питона
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.
encrypted.toString()
— плохой способ преобразования зашифрованного текста в строку. Используйте текстовое представление Base64 или HEX и преобразуйте его в код JS и Python соответственно. - person Oleg Estekhin   schedule 18.06.2014