首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用`os.system`调用gpg时,如何传递加密消息和密码?

使用`os.system`调用gpg时,如何传递加密消息和密码?
EN

Stack Overflow用户
提问于 2019-04-21 14:18:02
回答 1查看 652关注 0票数 0

我有一个python中的字符串形式的加密消息。我想用一个叫gpg的程序解密它。

在终端中,使用gpg需要:

  1. gpg -a
  2. 然后它会提示您输入加密邮件
  3. ,然后它会提示输入私钥。

当加密消息保存在python的变量中时,有没有办法在python中完成所有这些工作?我知道你用os模块向其他程序发出终端命令。

代码语言:javascript
复制
import os
import getpass
message = '093j0rawrkj2or2r'
private_key = getpass.getpass()
os.system("gpg --decrypt -a")
...?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-21 21:08:39

要输入加密的字符串,可以先通过echo输出它,然后通过管道输入gpg命令。

代码语言:javascript
复制
echo <message> | gpg --decrypt ...

要输入口令短语,有许多方法可以使用depending on your env and gpg version。在我的Ubuntu18.04.2gpg 2.2.4上起作用的是使用--pinentry-mode=loopback,然后传入--passphrase

代码语言:javascript
复制
gpg --decrypt -a --pinentry-mode=loopback --passphrase="yourpassphrase" 

然后,Python代码将如下所示:

代码语言:javascript
复制
import os

message = '093j0rawrkj2or2r'
command = "echo '{}' | gpg --decrypt -a --pinentry-mode=loopback --passphrase=yourpassphrase".format(message)
os.system(command)

但是放入实际的--passphrase-yourpassphrase是非常不安全的。另一种方法是将密码放在某个文件中,然后使用--passphrase-file选项。

代码语言:javascript
复制
import os

message = '093j0rawrkj2or2r'
command = "echo '{}' | gpg --decrypt -a --pinentry-mode=loopback --passphrase-file=yourpassphrasefile".format(message)
os.system(command)

我不知道你是从哪里得到加密信息的,但我通常处理的都是加密文件。如果加密输入来自文件,只需用cat <filepath>替换echo <string>即可

代码语言:javascript
复制
cat somefile.txt | gpg --decrypt -a --pinentry-mode=loopback --passphrase-file=yourpassphrasefile
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55780390

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档