多个未知收件人的Java文本加密
我有一个应用程序可以很好地使用共享的公共/秘密私钥加密任意大的文本字符串 我正在使用BouncyCastle与多个未知收件人的Java文本加密,java,encryption,messaging,Java,Encryption,Messaging,我有一个应用程序可以很好地使用共享的公共/秘密私钥加密任意大的文本字符串 我正在使用BouncyCastle与 private static final String ALGORITHM = "RSA"; private static final String UTF_8 = "UTF-8"; private static final int KEY_SIZE = 2048; 以鲍勃和安妮为例 安妮和鲍勃彼此共享公钥 Annie可以使用Bobs公钥向Bob发送加密消息来加密她的消息。鲍勃很高兴
private static final String ALGORITHM = "RSA";
private static final String UTF_8 = "UTF-8";
private static final int KEY_SIZE = 2048;
以鲍勃和安妮为例
安妮和鲍勃彼此共享公钥
Annie可以使用Bobs公钥向Bob发送加密消息来加密她的消息。鲍勃很高兴地用他的私钥解密
Bob可以用Annies公钥加密的消息进行回复
但是,Annie如何向未知收件人发送加密邮件
Annie如何向未知收件人列表“发布”消息
这可能吗?根据公钥密码原理,Annie无法向一组技术上未知的收件人发布加密邮件。她必须拥有可用的公钥(证书)
您或您的应用程序不必负责密钥管理,只要受信任的第三方证书颁发机构和注册机构可以管理它们。如果这在您的环境中是可行的,那么您最多只能对每个公钥证书执行路径验证,但不能直接管理材料。如果您不知道任何有关他们的信息,您就不能向他们发送任何信息。这一点不一定是公钥。它可能是别的东西 在非对称加密领域,基于RSA和EC的对手并不是唯一的参与者
- 基于身份的加密(IBE)使任何人都可以为只知道其“身份”(即简单字符串)的人加密某些内容。对于许多人来说,他们的身份与他们的电子邮件地址紧密相连,所以你可以使用它。当然,不一定是这样。它只需要是唯一的字符串 受信任的第三方稍后将检查申请私钥的客户端的身份,如果身份匹配,它将生成私钥进行解密。考虑到IBE已经存在了多长时间,我确信在Java中一定有IBE实现 IBE的一个问题是,您可能仍然需要向每个预期的收件人发送许多消息
- 基于属性的加密(ABE)在这方面更好,因为您可以使用策略(在基于属性的访问控制意义上)加密一些明文,并且只有在收件人持有必要的属性密钥时才能解密。这称为密文策略。这是一个更详细的描述 您仍然需要一个受信任的第三方,但现在您可以根据属性轻松地为组加密。私钥生成时间可能晚于加密时间。该库是用Java编写的,完全用Java工作。它是基于jPBC的,但是在另外安装libpbc(原始C版本)时可以加快速度