GnuPG - 如何在不解密的情况下编辑文件并首先保存到本地磁盘?

Dea*_*ean 18 linux encryption gnupg

我正在使用GNUPG来加密我的ascii文件.

我学会了生成密钥,以及如何使用它来加密和解密文件.

我使用了两种方法:

gpg -d foo.txt.gpg
Run Code Online (Sandbox Code Playgroud)

gpg --output foo.txt --decrypt
foo.txt.gpg
Run Code Online (Sandbox Code Playgroud)

我意识到第一种方法会在屏幕上显示解密文件,例如当我通过SSH执行命令时.

关于第二种方法,我担心它是否会在本地pc上留下痕迹--foo.txt文件.

最重要的是,我不知道如何动态编辑foo文件的内容.理想情况下,我想通过SSH打开文件使用nano/pico,键入我的密码来解密,然后编辑文件,保存并加密.我非常希望避免将任何文件保存到本地磁盘.

欢迎任何评论.

先感谢您.

ire*_*ses 5

一种方法是使用vim.请参阅此页面和此相关问题.

如果您需要更多的灵活性或不想使用vim,编写一个简短的程序来读取来自STDOUT的解密文本,根据自己的喜好编辑,然后重新加密并不是太困难.例如,您可以使用这个最小的Python代码(104行!)为您提供裸骨编辑器,然后自己添加流读取和写入功能.


Tim*_*ons 5

需要记住的一件事是,将未加密的数据保存在内存中并不能保证它不会到达磁盘。如果相关系统负载很重,则任何未加密的数据都可能会写入交换分区。同样,如果系统进入睡眠模式,任何挂起进程的状态都将存储到磁盘中。如果你的程序运行在嵌入式系统上,可以想象你的内存和“磁盘”是一回事。

系统mlock()调用将保护分配的内存不被交换到磁盘。但是,这需要管理权限,并将您限制为直接负责内存管理的低级语言。

也就是说,谨慎的做法是避免创建包含未加密数据的文件。请注意,如果底层系统受到损害,这并不能为您提供 100% 的安全性。


Mar*_*wis 0

如果您的编辑器可以从管道读取输入并保存到管道,那么您实际上可以使用解密到标准输出并从标准输入加密的 gpg 版本。不幸的是,对于 nano,从管道读取仅计划用于 2.4。例如,对于 gvim,您可以将解密和加密(通过管道)绑定到 key