是否可以强制gpg进行就地加密?换句话说,用加密数据覆盖源(未加密)文件?
这是ccrypt(1)默认运行的方式。
答案 0 :(得分:2)
答案基本上是否定的,不是没有自定义代码。
gpg可以在管道上运行,因此如果有一种简单的方法可以破坏性地将数据发送到管道,这可能是可行的。 But there isn't
避免快速耗尽磁盘的另一个想法是一次加密块(在自定义软件中)。
while !eof:
read()
encrypt()
write()
seek()
ccrypt似乎能够就地运行,因为加密数据与解密数据的长度相同(我对密码知之甚少,但这可能只是block ciphers的一般属性)。 GPG / PGP会执行压缩和添加标头之类的操作,因此输出数据的长度不会相同。如果它更短,没问题(上面的自定义代码应该工作)。如果它更长,则需要做更多的工作才能将溢出放在其他地方。
此自定义代码增加了加密和解密的复杂性(和默默无闻)。
答案 1 :(得分:0)
gpg通过使用原始文件名打开一个新文件并附加.gpg扩展名,然后将加密数据写入新文件来完成。如果一切正常,它会删除原始文件。
我认为您不想使用实际的就地加密,它会读取一个字节,加密它,将其写回文件等等......如果某些东西杀死了gpg进程会发生什么中途?你现在有了一个损坏的文件,一半的明文在微风中晃来晃去。