Python pycrypto模块:为何simplejson无法对加密字符串进行dumps?

3 投票
1 回答
5267 浏览
提问于 2025-04-17 10:14

它显示了 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进行解码。

撰写回答