我的應用程序必須通過公共通道將文件發佈到多個客戶端。我一直在做下面的過程來加密它使用Java中的公鑰加密數據的標準方法
- 生成一個對稱密鑰來加密數據。
- 然後用RSA公鑰加密這個密鑰併發布它。
考慮到此應用程序的所有客戶端都有應用程序的RSA公鑰,在發佈它之前是否有任何標準格式來加密文件?
我的應用程序必須通過公共通道將文件發佈到多個客戶端。我一直在做下面的過程來加密它使用Java中的公鑰加密數據的標準方法
考慮到此應用程序的所有客戶端都有應用程序的RSA公鑰,在發佈它之前是否有任何標準格式來加密文件?
顯然,有幾種標準的加密格式。最流行的標準格式之一是Cryptographic Message Syntax(CMS)。另請參閱Internet Standard的CMS的規格。這種格式被廣泛用於郵件安全性的S/MIME
。
Bouncy Castle API s爲此提供了很好的支持。 BC的是您使用的Bouncy Castle SMIME/CMS
圖書館。它是一個用於處理的包RFC 3852
加密消息語法(CMS)對象 - 也稱爲PKCS#7
(原名稱爲RFC 2630, 3369
),並且還處理S/MIME
對象(RFC 3851
)。
另一種流行的標準格式,XML Encryption format。端對端安全性,用於需要安全交換結構化數據的應用程序。 XML
本身是結構化數據最流行的技術,因此基於XML的加密是處理數據交換應用程序中複雜安全需求的自然方式。
只有一個?例如PGP呢?除非您知道自己在做什麼,否則使用XML進行加密非常危險。 – 2014-11-06 12:49:25
這對於XML來說是事實。無論如何,我已經改變了措辭來介紹XML加密格式。 :) – 2014-11-06 13:23:38
您的描述很奇怪。 #2意味着每個處於「公共」頻道的客戶端都有相同的私鑰。這通常沒有完成。但是你說每個人都有*應用程序的RSA公鑰*。你能詳細說明你的系統嗎?另外,你真的只是在問消息編碼嗎? – 2014-11-06 13:47:15
@ArtjomB。感謝您對SO上的加密問題感興趣,您的貢獻(非常重視)。 – 2014-11-06 14:11:41