3

它显示UnicodeError: 'utf8' codec can't decode byte 0x82 in position 0: unexpected code byte

这是代码:

from Crypto.Cipher import AES
import simplejson as json

key = '0123456789abcdef'
mode = AES.MODE_CBC
encryptor = AES.new(key, mode)
text = '1010101010101010'

json.dumps(encryptor.encrypt(text))

如何避免这个错误?

提前致谢!

4

1 回答 1

5

Cipher 通常会生成不可打印的二进制数据。json 不可能转储不可打印的字符。

一种解决方案可能是在 json 转储之前使用 base64 编码:

from Crypto.Cipher import AES
import simplejson as json
import base64

key = '0123456789abcdef'
mode = AES.MODE_CBC
encryptor = AES.new(key, mode)
text = '1010101010101010'

json.dumps(base64.encodestring(encryptor.encrypt(text)))

同样,在解密之前,您也必须对 base64 进行解码。

于 2012-01-14T16:17:25.923 回答