我正在尝试使用pycrypto了解AES,但我不知道自己在做什么错

时间:2018-07-26 02:13:35

标签: python encryption aes pycrypto

这是我用来教自己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)

1 个答案:

答案 0 :(得分:0)

唯一应视为字符串的字节是首先已编码为字符串的字节。由于密文包含随机字节,因此很可能会有一些字节不代表字符-几乎任何编码都具有未使用的/保留的字节值和/或不可打印的字符。如果要将密文转换为实际文本,则应使用(二进制到文本)编码,例如base 64。