python - 将 ASCII 铠装输出转换为二进制数据

标签 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-----

最佳答案

原始答案:这是您所追求的吗?

>>> 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'

关于python - 将 ASCII 铠装输出转换为二进制数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8220290/

相关文章:

python - 如何将 os.system() 输出存储在 python 中的变量或列表中

ruby - 为什么二进制文件在压缩时会损坏?

maven - 如何让 maven-gpg-plugin 使用来自环境变量或命令行属性的密码?

git - 如何修复 Git 提交 GPG 签名期间的 'cannot run --version: No such file or directory' 错误

python - transport.write() 从线程扭曲时出错

python - 排列几个 Pandas 数据框

blob - 二进制文件和 BLOB 之间的区别

java - 为什么在以下代码中 Filter Servlet 中捕获二进制数据失败?

Python CGI 脚本 IOError Broken Pipe

python - 使用 Python 更改 XML 文件中包含的文本的最佳方法是什么?