是的。你可以用RSA来做 - 做一个类似Diffie-Hellman的交换,因为不仅一对关联对中的关键字可以通勤,而且来自不同关键对的关键字也可以通勤。我们做了一个奇怪的现象在这里
alice -> bob: alice.pub bob -> alice: bob.pub alice: r = random.secret() alice -> bob: (r * (alice.priv * bob.pub)) bob: r = ((r * (alice.priv * bob.pub)) * (bob.priv * alice.pub))
通知。我们在一次操作中混合了来自不同密钥对的RSA操作。括号中的对象实际上是一个新的虚拟RSA密钥,并且这些密钥都不是公共的。如果我们试图直接创建RSA密钥,爱丽丝或鲍勃都会知道这对密钥。这个密钥对实际上是一个秘密密钥,你写信给一端,只有另一端可以解密它,但是你不能解密你自己写的东西,也没有人能够将消息加密到另一端。
我从来没有见过任何人混合这样的keypairs,但我通过编写代码来测试这个。我不得不做一些不寻常的事情,因为通常情况下,将私钥应用于消息是为了'签署'。但是签名通常会散列秘密,并将私钥应用到它的散列;我们不想要的东西。所以,在我的代码,一旦我有RSA组件(d,E,N)提取到任意精度的数字...即:解密,加密模...我只是做:
wormholeSend(me,you,msg) = (((me^{me_D}) \% me_N)^{you_E}) \% you_N
的有点棘手的是E(加密指数)实际上是一个可预测的值,但模数N在公钥(E,N)中。 D对每一方都是私密的。我们在这里需要小心,因为你和我有不同的模数N.
我这样做是因为我想要一个系统,一个程序被授权对用户可以解密的密钥进行加密。这样做,用户无法加密密钥,并且程序无法解密它们。
来源
2015-12-13 15:23:41
Rob
B的* private *键也可以成为A的* public *键吗?根据定义,两者是相互排斥的。私密应该保密,不公开。 – Mac 2011-04-14 11:54:21
这很难解释,但正如我所说;我不想让A方加密消息,他们只知道如何解密它们。这就是为什么他们不知道他们的“公共”钥匙。它可能不会被称为不对称加密,但这正是我试图找到的。 – SaphuA 2011-04-14 11:56:27