将ASCII装甲输出转换为二进制数据

时间:2011-11-22 00:05:16

标签: python binary-data gnupg

如何使用Python 2.6将以下PGP消息转换为二进制数据?

-----BEGIN PGP MESSAGE-----
Version: GnuPG v1.0.7 (MingW32)

hQIOA68nz9GqU7SREAgAxWfwvpziO4N6KquxmeuYD/txfTceyXRZGVqAGFUGmOdE
+K9PCLp/+p3cFC8OcOZg8WReI4wlpYzgS3/XsB4LL9MegSHwjjI9jNsnQOr9EeLA
IgDEb1NeXZ499qnSY1ZvCy/VCF1O7H71y77VQTckpfyHgWvzkaaaheMC0r+JGLZO
0w3NCTERFJ8XaXKz/+qw4gA7xxbpT9nXVXMwEwYgiAviJBJhdYw63oTlRYGgGzPh
H2YVNv2TWnpWp816xi+sbM1ZsJJERnAZSADKFYZzYw4E73VhUlrX5YBY4WN7UmQw=

-----END PGP MESSAGE-----

1 个答案:

答案 0 :(得分:4)

原文回答:这就是你的目标吗?

>>> import binascii
>>> message = '''hQIOA68nz9GqU7SREAgAxWfwvpziO4N6KquxmeuYD/txfTceyXRZGVqAGFUGmOdE
... +K9PCLp/+p3cFC8OcOZg8WReI4wlpYzgS3/XsB4LL9MegSHwjjI9jNsnQOr9EeLA
... IgDEb1NeXZ499qnSY1ZvCy/VCF1O7H71y77VQTckpfyHgWvzkaaaheMC0r+JGLZO
... 0w3NCTERFJ8XaXKz/+qw4gA7xxbpT9nXVXMwEwYgiAviJBJhdYw63oTlRYGgGzPh
... H2YVNv2TWnpWp816xi+sbM1ZsJJERnAZSADKFYZzYw4E73VhUlrX5YBY4WN7UmQw=
... '''
>>> binascii.a2b_base64(message)
'\x85\x02\x0e\x03\xaf\'\xcf\xd1\xaaS\xb4\x91\x10\x08\x00\xc5g\xf0\xbe\x9c\xe2;\x83z*\xab\xb1\x99\xeb\x98\x0f\xfbq}7\x1e\xc9tY\x19Z\x80\x18U\x06\x98\xe7D\xf8\xafO\x08\xba\x7f\xfa\x9d\xdc\x14/\x0ep\xe6`\xf1d^#\x8c%\xa5\x8c\xe0K\x7f\xd7\xb0\x1e\x0b/\xd3\x1e\x81!\xf0\x8e2=\x8c\xdb\'@\xea\xfd\x11\xe2\xc0"\x00\xc4oS^]\x9e=\xf6\xa9\xd2cVo\x0b/\xd5\x08]N\xec~\xf5\xcb\xbe\xd5A7$\xa5\xfc\x87\x81k\xf3\x91\xa6\x9a\x85\xe3\x02\xd2\xbf\x89\x18\xb6N\xd3\r\xcd\t1\x11\x14\x9f\x17ir\xb3\xff\xea\xb0\xe2\x00;\xc7\x16\xe9O\xd9\xd7Us0\x13\x06 \x88\x0b\xe2$\x12au\x8c:\xde\x84\xe5E\x81\xa0\x1b3\xe1\x1ff\x156\xfd\x93ZzV\xa7\xcdz\xc6/\xacl\xcdY\xb0\x92DFp\x19H\x00\xca\x15\x86sc\x0e\x04\xefuaRZ\xd7\xe5\x80X\xe1c{Rd0'

2016年编辑:原始答案来自2011年。正如评论部分所指出的,目前推荐的API为base64,如下所示:

>>> message = '''
... hQIOA68nz9GqU7SREAgAxWfwvpziO4N6KquxmeuYD/txfTceyXRZGVqAGFUGmOdE
... +K9PCLp/+p3cFC8OcOZg8WReI4wlpYzgS3/XsB4LL9MegSHwjjI9jNsnQOr9EeLA
... IgDEb1NeXZ499qnSY1ZvCy/VCF1O7H71y77VQTckpfyHgWvzkaaaheMC0r+JGLZO
... 0w3NCTERFJ8XaXKz/+qw4gA7xxbpT9nXVXMwEwYgiAviJBJhdYw63oTlRYGgGzPh
... H2YVNv2TWnpWp816xi+sbM1ZsJJERnAZSADKFYZzYw4E73VhUlrX5YBY4WN7UmQw=
... '''
>>> import base64
>>> base64.b64decode(message)
b'\x85\x02\x0e\x03\xaf\'\xcf\xd1\xaaS\xb4\x91\x10\x08\x00\xc5g\xf0\xbe\x9c\xe2;\x83z*\xab\xb1\x99\xeb\x98\x0f\xfbq}7\x1e\xc9tY\x19Z\x80\x18U\x06\x98\xe7D\xf8\xafO\x08\xba\x7f\xfa\x9d\xdc\x14/\x0ep\xe6`\xf1d^#\x8c%\xa5\x8c\xe0K\x7f\xd7\xb0\x1e\x0b/\xd3\x1e\x81!\xf0\x8e2=\x8c\xdb\'@\xea\xfd\x11\xe2\xc0"\x00\xc4oS^]\x9e=\xf6\xa9\xd2cVo\x0b/\xd5\x08]N\xec~\xf5\xcb\xbe\xd5A7$\xa5\xfc\x87\x81k\xf3\x91\xa6\x9a\x85\xe3\x02\xd2\xbf\x89\x18\xb6N\xd3\r\xcd\t1\x11\x14\x9f\x17ir\xb3\xff\xea\xb0\xe2\x00;\xc7\x16\xe9O\xd9\xd7Us0\x13\x06 \x88\x0b\xe2$\x12au\x8c:\xde\x84\xe5E\x81\xa0\x1b3\xe1\x1ff\x156\xfd\x93ZzV\xa7\xcdz\xc6/\xacl\xcdY\xb0\x92DFp\x19H\x00\xca\x15\x86sc\x0e\x04\xefuaRZ\xd7\xe5\x80X\xe1c{Rd0'