【发布时间】:2014-07-18 00:10:50
【问题描述】:
我正在尝试找出一种方法来更改由 GPG 对称加密的文件的密码,而无需使用临时文件或 shell 变量。我知道我可以在带有变量的 shell 函数中执行此操作,但如果可能的话,我想在命令行上执行此操作。
我认为这应该是可能的,因为 GPG 将使用 gpg --symmetric -o example.gpg 加密传入流,并且因为 GPG 将使用 gpg --decrypt 将解密的输出发送到 STDOUT。
但这不能正常工作:
gpg --decrypt example.gpg | gpg --symmetric -o new.gpg
我认为我对shell操作顺序和重定向的理解是错误的。尤其是因为 shell 输出一次有多个 Enter passphrase: 提示。
这是输入管道命令后的初始交互响应:
localhost ~% gpg --decrypt example.gpg | gpg --symmetric -o example.gpg
gpg: CAST5 encrypted data
Enter passphrase: Enter passphrase
之后,我会收到各种密码提示...有时会要求我输入解密密码,然后我可以以可见的纯文本输入新密码,然后隐藏新密码确认。有时,在我被要求输入解密密码之前,我会收到新密码对话。
我认为存在竞争条件。
有什么建议吗?
【问题讨论】:
-
究竟是什么问题?
标签: shell unix encryption command-line gnupg