使用Java中的公钥加密数据的标准方法
我的应用程序必须通过公共通道将文件发布到多个客户端。我一直在做下面的过程来加密它使用Java中的公钥加密数据的标准方法
- 生成一个对称密钥来加密数据。
- 然后用RSA公钥加密这个密钥并发布它。
考虑到此应用程序的所有客户端都有应用程序的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