2011-11-22 83 views
2

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

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

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

-----END PGP MESSAGE----- 
+0

的https:// EN。 wikipedia.org/wiki/Base64 –

回答

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年开始作为注释部分指出的那样,CURREN推荐这个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' 
+0

我欠你很多时间!非常感谢! –

+1

'binascii'是低级库;根据python-docs prefere使用更高的'base64' li代替:''import base64; base64.b64解码(消息)'' – ankostis

+0

@ankostis - 正确,更新的答案(最初来自5年前!)。 :) – mac