使用pyaes加密unicode字符串

时间:2014-10-06 17:46:13

标签: python python-3.x aes

以下代码效果很好:

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字符?

1 个答案:

答案 0 :(得分:1)

Unicode可以超过一个字节宽,但您的AES编码器/解码器需要一个单字节字符串。

您需要将unicode编码为单个字节(通常utf8适用于此):

unicode_string = u"\u00b0C"
encrypted = aes.encrypt(unicode_string.encode("utf8"))

然后当你解密它时你需要解码它:

decrypted = aes.decrypt(encrypted).decode("utf8")