2014-11-06 63 views
0

我的应用程序必须通过公共通道将文件发布到多个客户端。我一直在做下面的过程来加密它使用Java中的公钥加密数据的标准方法

  1. 生成一个对称密钥来加密数据。
  2. 然后用RSA公钥加密这个密钥并发布它。

考虑到此应用程序的所有客户端都有应用程序的RSA公钥,在发布它之前是否有任何标准格式来加密文件?

+1

您的描述很奇怪。 #2意味着每个处于“公共”频道的客户端都有相同的私钥。这通常没有完成。但是你说每个人都有*应用程序的RSA公钥*。你能详细说明你的系统吗?另外,你真的只是在问消息编码吗? – 2014-11-06 13:47:15

+1

@ArtjomB。感谢您对SO上的加密问题感兴趣,您的贡献(非常重视)。 – 2014-11-06 14:11:41

回答

1

显然,有几种标准的加密格式。最流行的标准格式之一是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的加密是处理数据交换应用程序中复杂安全需求的自然方式。

+0

只有一个?例如PGP呢?除非您知道自己在做什么,否则使用XML进行加密非常危险。 – 2014-11-06 12:49:25

+0

这对于XML来说是事实。无论如何,我已经改变了措辞来介绍XML加密格式。 :) – 2014-11-06 13:23:38