我正在寻找一个可交换的密码 - 那是
E(K₁,E(K₂,P)) = E(K₂,E(K₁,P))
但不是关联的 - 即
E(K,P) ≠ E(P,K)
这排除了异或,否则就可以了。
对称密码更可取,但不对称密码也可以使用。
我要实现的基本协议(protocol)是:
有人可以建议我可以使用的密码并指出我可以使用该密码吗?
我对密码协议(protocol)和应用程序有所了解,但我并没有真正了解大多数密码的数学原理。不过,循序渐进的数学指南是可以的。
我计划在 Clojure 中实现这一点,因此任何 Java 库也都很好。但是,任何代码都是好的,因为我了解代码。
最佳答案
听起来您正在尝试实现“心理扑克”(或者如果没有,您应该查看对它的研究,因为它与您的问题类似)。
SRA 算法具有您想要的属性。找到相关信息有点困难,但它本质上只是 RSA,除了 e
和 d
指数是保密的。琐碎:
(Pe1)e2 == (Pe2)e1
关于cryptography - 可交换密码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4122690/