这是我用来教自己AES如何工作的代码。应该产生加密的消息,然后紧接着产生解密的消息。如果有人可以帮助我弄清楚我做错了什么,那将不胜感激。
from Crypto.Cipher import AES
data = input(' --> ')
data = bytes(data, encoding='utf-8')
key = b'Sixteen byte key'
cipher = AES.new(key, AES.MODE_EAX)
nonce = cipher.nonce
ciphertext = cipher.encrypt_and_digest(data)
print(ciphertext)
ciphertext = str(ciphertext)
ciphertext = bytes(ciphertext, encoding='utf-8')
key = b'Sixteen byte key'
cipher = AES.new(key, AES.MODE_EAX, nonce=nonce)
plaintext = cipher.decrypt(ciphertext)
print('\n')
print(plaintext)
答案 0 :(得分:0)
唯一应视为字符串的字节是首先已编码为字符串的字节。由于密文包含随机字节,因此很可能会有一些字节不代表字符-几乎任何编码都具有未使用的/保留的字节值和/或不可打印的字符。如果要将密文转换为实际文本,则应使用(二进制到文本)编码,例如base 64。