我需要使用公鑰加密100KB文件。我一直在閱讀一些文章,聲稱使用公鑰直接加密大文件是不現實的,而且首選方法是使用對稱密鑰對文件進行加密,然後使用公鑰對該對稱密鑰進行加密。 看來,一個天真的解決方案是將大文件分解成碎片並使用相同的公鑰對它們中的每一個進行加密。我的問題是這個解決方案是否和爲什麼是錯誤的?使用公鑰加密大文件
回答
如果我理解你的權利,你要的文件,別人的公共密鑰加密,通過他們私鑰來解密?
使用對稱加密並且只使用公鑰密碼體制(對稱)密鑰的優點是性能:對稱密碼體系在計算上的資源密集程度要低得多(權衡:你必須保留密鑰的祕密 - 這就是第二,不對稱的步驟是什麼)。
分解文件會增加管理開銷(您如何確定將會有多少塊?您已將它們全部傳輸?),並且不會增加任何安全性。反之。
您提到的混合方法(生成一個隨機對稱密鑰,用它來加密數據,並且只對密鑰進行非對稱加密)具有巨大的性能優勢。
您可以「將大文件分解成碎片並使用相同的公鑰對它們中的每一個進行加密」,但沒有什麼問題,但速度更慢。
將文件拆分成小塊,然後用一些非對稱密碼對它們進行加密與加密過程的運行時成本無關。最佳做法是使用相對較強的密鑰以良好的對稱密碼加密數據,並使用非對稱密碼(使用您的公鑰)對對稱加密中使用的密鑰進行加密。
如果不考慮性能,混合加密爲什麼是最佳實踐? – Thilo 2010-08-16 09:31:01
我的意思是,如果您拆分文件並再次使用非對稱加密,性能不會提高。在混合方法中,您可以利用對稱密碼來加密大數據,因爲與非對稱密碼相比,對稱密碼相對更省時。並且說您的密鑰是256位/ 32字節,您只需使用非對稱密碼來加密32字節的數據。這種方法比用非對稱密碼加密整個文件要好。 – 2010-08-16 11:24:18
非對稱加密過於緩慢,最常用的方法是使用不對稱加密隨機對稱密鑰,並使用該對稱密鑰加密數據。 而且,最好的方法是使用衆所周知的協議/標準(例如OpenPGP)。
You ment GnuPG? – TBH 2010-08-24 12:03:25
也是GnuPG - GnuPG是OpenPGP標準的實現之一。還有其他商業實現,可以更靈活和更實用。 – 2010-08-24 13:00:17
除了對稱密鑰加密的速度提升之外,還有另一個可能的好處:首先使用隨機安全生成的對稱密鑰對消息進行加密,然後可以爲多個收件人加密對稱密鑰,每個收件人自己加密一次公共非對稱密鑰,而不必重新加密整個消息。
- 1. 使用公鑰加密大文件
- 2. 使用Java中的RSA公鑰文件加密AES密鑰
- 3. RSA使用公鑰加密
- 4. Python加密,RSA公鑰/私鑰,大文件
- 5. 用公鑰解密文件
- 6. 使用RSA公鑰加密DSA私鑰
- 7. 公鑰加密
- 8. 公鑰郵件加密
- 9. PyCrypto:解密只用文件中的公鑰(無私鑰+公鑰)
- 10. 使用大於密鑰大小的密鑰加密消息
- 11. RSA加密公鑰?
- 12. Bouncycastle:用公鑰加密
- 13. 如何使用C#中的公鑰加密文件?
- 14. 使用RSA公鑰加密字符串
- 15. 使用公鑰加密數據
- 16. 使用公鑰加密數據
- 17. 使用PKCS的公鑰加密
- 18. 紅寶石:文件加密/解密與私有/公共密鑰
- 19. 在PHP中使用密鑰加密和解密使用密鑰的PHP文件
- 20. 閱讀公鑰文件並使用密鑰加密另一個文件的問題
- 21. 使用ansible對加密AWS .pem密鑰文件進行加密
- 22. RSA加密基於公鑰
- 23. C/C++加密/與公鑰
- 24. iphone - 如何用公鑰加密NSData並用私鑰解密?
- 25. 如何使用私鑰加密字符串並使用公鑰解密?
- 26. 帶加密公鑰和私鑰對的大難題概念
- 27. .NET中的最小郵件大小公鑰加密
- 28. 帶私鑰/公鑰的EPub加密
- 29. 使用AES 128模式cbc使用公鑰X509 V3加密文件(PKCS7)
- 30. 用RSA公鑰和私鑰加密和解密一個SecretKey
保持共享密鑰的祕密是通過隨機爲每個消息生成一個新消息來解決的,將消息發送給接收者public-key-encrypted並將其丟棄。 – Thilo 2010-08-16 08:10:22
另一種方法是將兩者結合起來。 步驟1:創建任何Randome-Key,例如64字符串(512位) 步驟2:使用步驟1中的密鑰對文件進行對稱加密步驟3:使用任何非對稱加密(公鑰) 步驟4:將步驟3的結果添加到加密文件的末尾。 要解密: 第1步:閱讀和刪除最後一個XXX位形成文件 第2步:用你的私鑰 第3步解密從步驟1中的數據:解密用誰的步驟的結果的關鍵文件2 – Floyd 2010-08-16 08:14:29
是的,我澄清了這個回答 - 我一般講的是保持關鍵祕密,這就是公鑰關鍵步驟。 – chryss 2010-08-16 09:04:12