Python pycrypto模块:为何simplejson无法对加密字符串进行dumps?
它显示了 UnicodeError: 'utf8' 编码无法解码位置 0 的字节 0x82: 意外的代码字节
这里是代码:
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 个回答
5
加密器通常会生成一些不可打印的二进制数据。这些数据是无法直接用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进行解码。