是否可以在一个顺序中进行加密,在另一个顺序中进行解密?例如,我有以下内容:
- plain_text.txt
- 公钥/私钥对1
- 公钥/私钥对2
示例
加密:
public1(public2(plain_text.txt))
解密:
private1(private2(encrypted))
有没有一种加密算法可以实现这个?这种情况是否可能发生?
是否可以在一个顺序中进行加密,在另一个顺序中进行解密?例如,我有以下内容:
加密:
public1(public2(plain_text.txt))
解密:
private1(private2(encrypted))
(m hAr+r', gr+r')
请注意,知道秘密密钥xA可以解密,因为
(gr)xA = hAr
要再次加密密文,首先需要使用A的公钥重新加密现有密文。 他选择一个随机数r'并计算
(m hAr hAr', grgr') = (m hAr+r', gr+r').
结果只是另一个有效的使用A的公钥加密的结果。 这种重新加密是必要的,以避免攻击,例如对等模数的RSA攻击,如下所示。 接下来,将使用B的公钥进行加密,得到
解密可以按任意顺序进行,例如知道 xA 可以计算出:使用公钥/私钥加密,答案是否定的。PubK1(PubK2(plain.text))
=> encrypted.text。您必须使用PrivK2(PrivK1(encrypted.text))
进行解密。
但是,如果您使用对称流密码(例如RC4),则可以更改解密顺序(A xor B xor C = C xor B xor A)。但这显然不是公钥/私钥算法。
据我所知,这应该可以通过对RSA进行轻微修改来实现。但是我不知道有哪些工具可以真正做到这一点。