Python pycrypto模块:为什么simplejson不能转储加密的字符串?

时间:2012-01-14 16:08:39

标签: python pycrypto

它显示 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))

如何避免此错误?

提前致谢!

1 个答案:

答案 0 :(得分:5)

密码通常会生成不可打印的二进制数据。 json无法转储不可打印的字符。

一种解决方案可能是在json dump之前使用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。