在Python 3中将字节转换为字符串时出错

时间:2015-08-06 21:21:29

标签: python-3.4 pycrypto pkcs#8

尝试转换从pkcs8密钥提取得到的字节序列时出错:

b'0\x82\x02[\x02\x01\x00\x02\x81\x81\x00\xb9_\xc3\xe7x\xd6\x96W\xb0\xaf\xcb\x8f\x08\xe6f<\x00\x14\xd4&d\xad\x0b}\x1d\xaf\xaf,\x87\xf5\x9f\x9bL\x12K\xbcO\x18\xe9N`\xe7\xa6\x0b\xf9\xc2\x84\x84n\xa1\xc2\xac\xc6|8&mR,YY\t\x9aV&E\xc2\x8eZ\\=\x18\x98\x10\xa2pO\xbezpe\xa6\xa6\xf01!\xcd\xfeK\xdd\xb6$\x14\xe8\xfa0\x17\x8e0\xfb\xf6\xc8\xb8\x17\xf7g\x9c\x8c\xb2d\xee\x8f\x7fg~\xea\x03\xd3\x8a\x0f\x9e\xfb~\xe0F\xda\xca\xfd\x02\x03\x01\x00\x01\x02\x81\x80.\x18\t\xf6|\xad\x9f$\x9e\xe2\x97\x931{X\xe0\x82\x84\xab\\\x00\x9c\xa6\xc6\xad\xa3\t\xc3\xe0\xea\xca\x8d+\x15A\x8f\xc9{@H%\x00t\xe1uqP\xd2=P+\xc0\x1az\xb8\xdb\x95Ca\x93\xb5\xf8\x15O\xf9\xa6?\x08\xf4\xd8\xa6\x83X-\xe3\xfd>\xcb\xe7\x7f\x00\x1d\xcf<\x9dI\xdf\xaca\x84\xb5\x06\xd2\xb0\xd3\x0f\x84\x96\xcdrf\xeb\x99o\x8eh\x9f\xc5\xd6\xde\x06\xdf@\x02\x04\xe1\x7f\xce\x11;\xa0\x06I\x0e#f\x8e\x01\x02A\x00\xf3*\xa2\x82\xd5w\x0f\x93=\xa3\xa4;\x10Y\x0f\xca\xf7\xeeX\xc3\xd4\xaa\x83\x82Jr\xa8\x06M\x10BO\xda\xf9\x01P\x14\x84\xb0\xe8P\xf8u\x94K:!4\xc8\x7fM\x92\n\xbb\x05w\xd2\xf0s\xe5\xe45\xec-\x02A\x00\xc3(Oo\xdf["E\xe8kK2\x90\x90l\x9c\x83\x02V\x8e0\xe1h\x8cS\x17\x00\\\xbf\x8e\xbb#ZD\xb8\xe3\xbd\x99\x9bn\xdd\xfa\xceD\x95Z\xd8t\xdfZ\xbbG\x8f\xc9s\xb9\xd5\xd0\xd6\xa0\xb5\x84\x0c\x11\x02@\x07S\xf6\x97\xc8\xc5\x10\xc4\x18,qK\x92_\x8c\xb9J%u\xa9Y$VX;\xd4\x1e\xba)\xe2^\x8d7\x85\x1f\x84\x01JJf\x85\xe2&\xf0\xf4\x1fiV\xc4\xe0\t?hq`e\xcf\x06\x8e\x07\x94\x8c\x07u\x02@rf\xe4\xfa=\xc2\xdc\xba\x82^\xb3<7\x06\x92\xc4\xc4\xff\xcf\xe1\x96\xc1\xecY\xa63\xab\xa0\xb3"f\x8dx\xd3$WL\xc4\t\x1b\xda\xc0\xb5\xbd\xfa\x97\xc0\x9f\xf2v\xeb\xa6-\xa1\xf8W\x0e\x02Xn\xe999!\x02@-\xfeH\xf4\xdc\xab\x8cI4\x11\xbb\x0e\xfb<\xe49\x99\xba}\xf0`5\x9f\xd0\xcaW\x86U\x910%wT\xcb\x10X\x80\xf7\xed\xa4\x15\t\xc3%ie\x88Qd\x82\x1d\xf5\x82\x00\xb3\xf5\xcf\xc7"f\xd3\x00\xa5?'

这是我的代码

from Crypto.IO.PKCS8 import unwrap

file = open('file.key', 'rb')

key = unwrap(file.read(), passphrase='mypass')

print(key.decode('utf-8'))

但我一直在

UnicodeDecodeError: 'utf-8' codec can't decode byte 0x82 in position 1: invalid start byte

如何以utf-8编码获得正确的输出?

1 个答案:

答案 0 :(得分:0)

decoded_key = bytes(key, 'raw_unicode_escape')