回答
答案基本上不是,沒有自定義代碼。
gpg可以在管道上操作,所以如果有一種簡單的方式將數據破壞性地發送到管道,這可能是可行的。 But there isn't。
避免快速使用磁盤的另一個想法是一次加密塊(在自定義軟件中)。
while !eof:
read()
encrypt()
write()
seek()
看來,ccrypt能夠就地操作,因爲加密的數據是相同的長度,解密後的數據(我知道有點加密的,但是這也可能只是的block ciphers一般屬性)。 GPG/PGP做類似壓縮和添加標題的東西,所以輸出數據的長度不會相同。如果它更短,沒有問題(上述自定義代碼應該工作)。如果時間更長,則需要做更多的工作來將溢出置於其他地方。
此自定義代碼增加了加密和解密的複雜性(並且隱含)。
gpg通過使用原始文件名打開一個新文件並附加一個.gpg擴展名,然後將加密數據寫入新文件來完成。如果一切正常,它會刪除原始文件。
我不認爲你會想要使用實際的就地加密,它會讀取一個字節,加密它,把它寫回到文件等等......如果有什麼東西殺死了gpg過程中途過程?你現在有一個損壞的文件,一半的明文懸在微風中。
是的,我同意你對gpg的分析,我確認strace也一樣。至於爲什麼我想要就地加密......我只是這樣做。 :)這裏有一個場景:我想加密一個400GB的文件,我有一個500GB的硬盤。我想要的其他原因:它更安全。是的,我意識到它也更危險。請參閱ccrypt(1)聯機幫助頁:「對於加密,這通常是所需的行爲,因爲不希望未加密數據的副本保留在文件系統中的隱藏位置。」 – 2011-02-27 07:09:43
- 1. 使用PGP進行加密並使用GPG進行解密
- 2. 使用gpg對加密密鑰進行數字簽名
- 3. Gpg使用公鑰加密
- 4. 使用GPG加密代碼
- 5. 使用GPG進行驗證
- 6. 使用MAC地址進行加密
- 7. gpg加密和解密
- 8. 使用Java進行AES加密並使用Javascript進行解密
- 9. Tkinter python 3 - gpg加密
- 10. 使用用戶密碼進行加密
- 11. 使用密鑰文件進行加密,使用密碼進行解密
- 12. GPG:解密BLOWFISH加密文件
- 13. gpg解密失敗BouncyCastlePGP加密郵件
- 14. 使用主密鑰進行Python加密
- 15. 使用C++進行加密和解密
- 16. 使用DES和密碼進行加密
- 17. 使用OpenSSL密鑰進行Java加密
- 18. 使用passport.js進行密碼加密
- 19. PHP:使用bcrypt進行密碼加密
- 20. 使用字典進行加密/解密
- 21. 使用不同密鑰大小的PGP/GPG簽名和加密
- 22. Ruby應用程序中的GPG加密
- 23. 如何用ssh公鑰加密gpg?
- 24. 命令行GPG使用c#解密 - 密碼?
- 25. 調用GPG的本地副本對加密
- 26. Enigmail GPG錯誤 - gpg:解密失敗:密鑰不可用
- 27. 使用ansible對加密AWS .pem密鑰文件進行加密
- 28. 如何強制maven-gpg-plugin使用主要gpg密鑰而不是子密鑰?
- 29. 如何讓Makefile無密碼地使用gpg?
- 30. GPG - 使用多個收件人解密
屬於http://superuser.com/ – 2011-02-27 12:50:54
也許吧。我選擇了stackoverflow.com,因爲常見問題解答提到這裏是關於「程序員常用的軟件工具」的問題 – 2011-02-28 20:29:58