使用gpg进行就地加密

时间:2011-02-27 06:32:46

标签: encryption pgp gnupg

是否可以强制gpg进行就地加密?换句话说,用加密数据覆盖源(未加密)文件?

这是ccrypt(1)默认运行的方式。

2 个答案:

答案 0 :(得分:2)

答案基本上是否定的,不是没有自定义代码。

gpg可以在管道上运行,因此如果有一种简单的方法可以破坏性地将数据发送到管道,这可能是可行的。 But there isn't

避免快速耗尽磁盘的另一个想法是一次加密块(在自定义软件中)。

while !eof:
  read()
  encrypt()
  write()
  seek()

ccrypt似乎能够就地运行,因为加密数据与解密数据的长度相同(我对密码知之甚少,但这可能只是block ciphers的一般属性)。 GPG / PGP会执行压缩和添加标头之类的操作,因此输出数据的长度不会相同。如果它更短,没问题(上面的自定义代码应该工作)。如果它更长,则需要做更多的工作才能将溢出放在其他地方。

此自定义代码增加了加密和解密的复杂性(和默默无闻)。

答案 1 :(得分:0)

gpg通过使用原始文件名打开一个新文件并附加.gpg扩展名,然后将加密数据写入新文件来完成。如果一切正常,它会删除原始文件。

我认为您不想使用实际的就地加密,它会读取一个字节,加密它,将其写回文件等等......如果某些东西杀死了gpg进程会发生什么中途?你现在有了一个损坏的文件,一半的明文在微风中晃来晃去。