2011-02-27 56 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