以下代码效果很好:
import os, pyaes
key = os.urandom (16)
aes = pyaes.AESModeOfOperationCTR (key)
encrypted = aes.encrypt ('Hello world')
aes = pyaes.AESModeOfOperationCTR (key)
decrypted = aes.decrypt (encrypted)
print (encrypted)
print (decrypted)
但是当我尝试编码unicode字符串时,例如包含希伯来字母的字符串,会引发错误:
ValueError: bytes must be in range(0, 256)
如何编码unicode字符?
答案 0 :(得分:1)
Unicode可以超过一个字节宽,但您的AES编码器/解码器需要一个单字节字符串。
您需要将unicode编码为单个字节(通常utf8适用于此):
unicode_string = u"\u00b0C"
encrypted = aes.encrypt(unicode_string.encode("utf8"))
然后当你解密它时你需要解码它:
decrypted = aes.decrypt(encrypted).decode("utf8")