是否可以对 gpg 中的原始输入进行加密?

JSp*_*cky 7 encryption gnupg

我想加密一个字符串而不将其写入文件。

使用GPG加密文件的方法是

gpg --encrypt --sign --armor -r <target@email.com> -r <sender@email.com> <filename.txt>
Run Code Online (Sandbox Code Playgroud)

我想要的是能够简单地输入 filename.txt 所在的字符串或一系列数字,并将其加密到文件中。

gpg --encrypt --sign --armor -r <target@email.com> -r <sender@email.com> <"this is a string that needs to be encrypted">
Run Code Online (Sandbox Code Playgroud)

有没有办法做到这一点,或者是否需要传入 filename.txt?

Jen*_*rat 7

我不知道有任何选项允许您将输入作为参数传递,但您可以简单地使用管道:

echo 'foo bar' | gpg -r target@example.com --encrypt
Run Code Online (Sandbox Code Playgroud)

您当然可以添加您使用的所有附加选项和命令。通过使用管道,输出不会存储为中间文件,但echos stdout 和gpgs stdin 使用小型内存缓冲区进行连接。

  • 我猜你无论如何都有来自另一个进程的输出(“echo”只是用于在此处获取示例输出)——在这里,管道将完全没问题。否则,在脚本上下文中,使用与链接答案中建议的类似的管道。如果您要创建临时文件,请确保使用适当的系统调用,其中(1)确保它们不是世界可读的,(2)随后删除,(3)考虑它们在删除过程中可能不会被覆盖,即使如果您自己覆盖它们(特别是在写入文件系统上的复制)。 (2认同)