cryptography - 可交换密码?

标签 cryptography

我正在寻找一个可交换的密码 - 那是

E(K₁,E(K₂,P)) = E(K₂,E(K₁,P))

但不是关联的 - 即
E(K,P) ≠ E(P,K)

这排除了异或,否则就可以了。

对称密码更可取,但不对称密码也可以使用。

我要实现的基本协议(protocol)是:
  • Alice 有一个 token 列表(32 位整数),她使用相同的 key (K0)
  • 加密每个 token
  • Alice 将加密 token 列表发送给 Bob
  • Bob 将列表随机化,使用单独的 key (K1 - Kn) 加密每个 token ,标记每个 token 并将列表返回给 Alice。
  • Alice 用 K0 解密每个 token ,给她留下一个 token 列表,每个 token 都用一个单独的 key (K1 - Kn)
  • 一段时间后,Bob 向 Alice 发送了一个特定标签 (Kx) 的 key
  • Alice 用 Kx 解密 token ,给她标记为 x
  • 的 token 的明文。
  • Bob 可能会看到明文,因此在给定他之前提供的信息的情况下,他一定无法从中推导出 K0。

  • 有人可以建议我可以使用的密码并指出我可以使用该密码吗?

    我对密码协议(protocol)和应用程序有所了解,但我并没有真正了解大多数密码的数学原理。不过,循序渐进的数学指南是可以的。

    我计划在 Clojure 中实现这一点,因此任何 Java 库也都很好。但是,任何代码都是好的,因为我了解代码。

    最佳答案

    听起来您正在尝试实现“心理扑克”(或者如果没有,您应该查看对它的研究,因为它与您的问题类似)。

    SRA 算法具有您想要的属性。找到相关信息有点困难,但它本质上只是 RSA,除了 ed指数是保密的。琐碎:

    (Pe1)e2 == (Pe2)e1

    关于cryptography - 可交换密码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4122690/

    相关文章:

    cryptography - RSA 公钥文件类型检测

    javascript - 如何通过 '@solana/web3.js' 和 '@solana/sol-wallet-adapter' 传输自定义 SPL token

    cryptography - 如何计算具有大质数的大数的模数?

    delphi - 需要一个允许我使用 RSA 加密/解密某些文本的 Delphi 组件/库

    java - 使用对称 key (AES -128) 签署和验证消息

    c# - 在 .NET 中使用 PEM 编码的 RSA 私钥

    cryptography - 在我的应用程序中使用加密技术会限制其可用性吗?

    c - 使用 OpenSSL 以编程方式在 X509 证书中输入数据

    Android google play 控制台错误 APK 不安全地传输用户数据

    java - 3DES 解密错误 key 长度无效