问题
It shows UnicodeError: 'utf8' codec can't decode byte 0x82 in position 0: unexpected code byte
Here is code:
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))
How to avoid this error?
Thanks in advance!
回答1:
The Cipher usually generates non-printable binary data. It is not possible for json to dump non-printable characters.
One solution could be to use base64 encoding prior to json dump:
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)))
Similarly, before decryption, you'll have to decode base64 as well.
来源:https://stackoverflow.com/questions/8863423/python-pycrypto-module-why-simplejson-cant-dumps-encrypted-string