2011-02-27 66 views
1

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

这是默认情况下ccrypt(1)如何运行的。

+0

属于http://superuser.com/ – 2011-02-27 12:50:54

+0

也许吧。我选择了stackoverflow.com,因为常见问题解答提到这里是关于“程序员常用的软件工具”的问题 – 2011-02-28 20:29:58

回答

2

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

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

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

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

看来,ccrypt能够就地操作,因为加密的数据是相同的长度,解密后的数据(我知道有点加密的,但是这也可能只是的block ciphers一般属性)。 GPG/PGP做类似压缩和添加标题的东西,所以输出数据的长度不会相同。如果它更短,没有问题(上述自定义代码应该工作)。如果时间更长,则需要做更多的工作来将溢出置于其他地方。

此自定义代码增加了加密和解密的复杂性(并且隐含)。

0

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

我不认为你会想要使用实际的就地加密,它会读取一个字节,加密它,把它写回到文件等等......如果有什么东西杀死了gpg过程中途过程?你现在有一个损坏的文件,一半的明文悬在微风中。

+0

是的,我同意你对gpg的分析,我确认strace也一样。至于为什么我想要就地加密......我只是这样做。 :)这里有一个场景:我想加密一个400GB的文件,我有一个500GB的硬盘。我想要的其他原因:它更安全。是的,我意识到它也更危险。请参阅ccrypt(1)联机帮助页:“对于加密,这通常是所需的行为,因为不希望未加密数据的副本保留在文件系统中的隐藏位置。” – 2011-02-27 07:09:43