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 上的标准输入加密文件和密码的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Windows 10 上的 Git bash 上为标准输入注入 EOF?
如何在 Windows 上的 Git Bash 终端下向 EOF 发出信号以关闭标准输入? Ctrl-D 不起作用
E: gnupg, gnupg2 和 gnupg1 好像没有安装,但是这个操作需要其中一个