有没有可能强制gpg进行就地加密?换句话说,用加密数据覆盖源(未加密)文件?
这就是ccrypt(1)的默认操作方式。
发布于 2011-03-08 02:10:53
答案基本上是否定的,没有自定义代码就不行。
gpg可以在管道上操作,所以如果有一种简单的方法将数据破坏性地发送到管道,这可能是可行的。But there isn't。
防止磁盘快速耗尽的另一个想法是一次加密块(在自定义软件中)。
while !eof:
read()
encrypt()
write()
seek()看起来ccrypt能够就地操作,因为加密的数据与解密的数据长度相同(我对crypto知之甚少,但这可能只是block ciphers的一个通用属性)。GPG/PGP会做一些事情,比如压缩和添加报头,所以输出的数据不会是相同的长度。如果它更短,没问题(上面的自定义代码应该可以工作)。如果它更长,则需要做更多的工作才能将溢出放在其他地方。
这个自定义代码增加了加密和解密的复杂性(和模糊性)。
发布于 2011-02-27 14:46:53
gpg通过使用原始文件名打开一个新文件并附加一个.gpg扩展名,然后将加密数据写到新文件中。如果一切正常,它会删除原始文件。
我认为你不会想要使用真正的就地加密,在这种情况下,它会读取一个字节,加密它,将它写回文件中,等等。如果gpg进程在中途被杀死,会发生什么?您现在得到了一个损坏的文件,其中一半的明文在微风中摇摆。
https://stackoverflow.com/questions/5131810
复制相似问题