GNUPG - Windows 上的标准输入加密文件和密码

Posted

技术标签:

【中文标题】GNUPG - Windows 上的标准输入加密文件和密码【英文标题】:GNUPG - stdin encrypted file and passphrase on windows 【发布时间】:2012-10-22 22:49:11 【问题描述】:

如何在 gpg.exe 中通过管道传输密码和加密文件?

我尝试了几种不同的组合,但我无法让它发挥作用。

这是我的尝试,

C:\>gpg.exe --output [OUTPUT_FILE] --batch --passphrase-fd 0 --decrypt < [INPUT_FILE] < [PASSPHRASE_FILE]

从这里我得到错误

gpg: decrypt_message failed: eof

交换输入和密码时出现错误

gpg: no valid OpenPGP data found.
gpg: decrypt_message failed: eof

如果我不尝试通过标准输入发送加密文件,那么解密工作正常。

最终我想做的是根据文件名中带有日期时间戳的文件掩码解密文件。概述如下,

C:\>gpg.exe --output yyyyMMdd.csv --batch --passphrase-fd 0 --decrypt < *_yyyyMMdd_*.txt < [PASSPHRASE_FILE]

我不确定这是否可行,因为我无法使基本场景正常工作,如果有人能建议我实现这一目标的最佳方法,我将不胜感激。

【问题讨论】:

【参考方案1】:

不要对您要解密的文件使用重定向,仅对包含您的密码的文件使用重定向:

C:\>gpg.exe --output [OUTPUT_FILE] --batch --passphrase-fd 0 --decrypt [INPUT_FILE] < [PASSPHRASE_FILE]

但老实说,您可能更容易从密钥中删除密码。毕竟,将密码存储在文件中并不是很安全。只需将您的密码更改为空白并保护您的 gpg 主目录,以拒绝对您自己以外的任何进程的访问。

【讨论】:

感谢您的回复。不幸的是,我已集成到现有系统中,因此无法更改文件上的密码。 我会先使用批处理或powershell脚本查找文件,然后使用结果gpg命令。 如何解密为原始文件名(我不知道原始文件名)(有人加密 111.AAA 并将其作为 111.PGP 发送给我 - 我想解密它但我不知道已经是 AAA 了。我怎样才能告诉 pgp 自动执行)? @RoyiNamir 我不确定这是否可能。据我所知,原始文件名没有记录在加密文件中的任何地方。您可能想问一个新问题。

以上是关于GNUPG - Windows 上的标准输入加密文件和密码的主要内容,如果未能解决你的问题,请参考以下文章

使用GnuPG(PGP)加密信息及数字签名教程_转

如何在 Windows 10 上的 Git bash 上为标准输入注入 EOF?

如何在 Windows 上的 Git Bash 终端下向 EOF 发出信号以关闭标准输入? Ctrl-D 不起作用

E: gnupg, gnupg2 和 gnupg1 好像没有安装,但是这个操作需要其中一个

VS中用C#编写一个DES(或3DES)加解密的Windows应用程序

GnuPG homedir读/写权限