gpg的对称加密如何自动发送密码?

How to send the password automatically in gpg's symmetric encryption?

我想对文件/tmp/public.txt进行对称加密。

gpg --symmetric /tmp/public.txt

该命令将调用 enter passphrase window,我想自动发送密码。

我在这里尝试:

echo "mylongpasswordhere"  | gpg --passphrase-fd 0   --symmetric /tmp/public.txt

还是弹出enter passphrase window,gpg的对称加密如何自动发送密码?

key="it is a long password to encrypt and decrypt my file in symmetric encryption
"

加密public.txt.

openssl enc -des3 -a -salt -in public.txt -k ${key} -out public.asc

解密public.asc。

openssl enc -d -des3 -a -salt -k ${key} -in public.asc -out public.out

我可以得出结论,openssl 是比 gpg 更强大的加密工具吗?

根据您的 GnuPG 版本 (>= 2.1.0),您需要在命令中添加“--pinentry-mode loopback”。

对于 GnuPG 版本 >= 2.1.0 但 < 2.1.12,您还需要添加:"allow-loopback-pinentry" 到 ~/.gnupg/gpg-agent.conf

你的命令将是:

echo "mylongpasswordhere"  | gpg --pinentry-mode loopback --passphrase-fd 0   --symmetric /tmp/public.txt

或者您不必使用 passphrase-fd 和回显,但可以直接提供密码:

gpg --pinentry-mode loopback --passphrase "somepass" --symmetric /tmp/public.txt

因为我偶然发现这个问题有同样的问题,所以我会 post 实际帮助我的答案(来自其他 SE 问题)。这里的关键选项是 --batch --yes:

$ gpg --passphrase hunter2 --batch --yes --symmetric file_to_enc

(取自this question

这样您实际上可以对称地提供密钥作为命令行参数来加密文件,尽管这可能意味着系统的其他用户可能会看到使用的密码。