1

是否有一种加密算法允许多个密钥进行解密和加密?

A = Key one
B = Key two

数据交换应该可以如下

1. Clear Text == A ==> Encrypted == B ==> Clear Text
2. Clear Text == B ==> Encrypted == A ==> Clear Text

编辑 1:
算法应该在 Java 中可用。

编辑2:更广泛的图片
数据库存储加密数据。大多数用户必须使用他们的个人密码读取和写入(解密和加密)一小部分数据。一些用户需要使用他们的个人密码访问(解密和加密)所有数据。
两个用户组的成员不得知道除他们之外的其他密码。

4

2 回答 2

2

如果 A 是公钥,B是 PKI 系统中对应的私钥(或相反),那么是,否则不是。

更新:你现在提供了“更广泛的图片”,恐怕答案已经变成:不,你不能那样做。要了解原因,您需要意识到这两个组都需要能够加密和解密。所以你的要求真的是:

  1. 明文 == A ==> 加密 == B ==> 明文
  2. 明文 == B ==> 加密 == A ==> 明文
  3. 明文 == A ==> 加密 == A ==> 明文
  4. 明文 == B ==> 加密 == B ==> 明文

您可以做的最好的事情是使用一些授权机制来控制谁可以访问数据,并以未加密的方式存储数据本身。

于 2013-10-21T10:06:58.713 回答
2

这通常通过存储在一个或多个公钥下加密的对称密钥来解决。

对称密钥用于加密数据库中的数据。每个用户都有一个非对称密钥对。如果用户有权查看某条数据,则必须存储一份在用户公钥下加密的对称密钥的副本。

这在 Java 中都是可以实现的。Cipher.WRAP_MODE可用于密钥包装/取消包装。

因为您提到 Java 作为一个约束,所以我觉得这个问题只是关于主题。但请注意,关于密码学和安全设计的一般性讨论与 Stack Overflow 无关。

于 2013-10-21T13:24:12.273 回答