【问题标题】:Diffie Hellman Key Agreement using optional subprime q with DHParameterSpec in JavaDiffie Hellman 密钥协议在 Java 中使用可选的子质 q 和 DHParameterSpec
【发布时间】:2021-07-22 12:44:40
【问题描述】:

我正在尝试执行 Diffie Hellman Hey 协议,作为参数定义的一部分,我有 3 个值:

素数模数 p 一个基础生成器 g 次贷q

查看用于创建执行此协议所需的密钥的各种构造函数,我似乎无法设置 q 值:

https://docs.oracle.com/en/java/javase/11/docs/api/java.base/javax/crypto/spec/DHParameterSpec.html

DHParameterSpec​(BigInteger p, BigInteger g)
使用素数模 p 和基础生成器 g 为 Diffie-Hellman 构造参数集。 DHParameterSpec​(BigInteger p, BigInteger g, int l)
为 Diffie-Hellman 构造参数集,使用素数模 p、基生成器 g 和随机指数(私有值)的比特大小 l。

https://docs.oracle.com/javase/9/docs/api/javax/crypto/spec/DHPublicKeySpec.html

DHPublicKeySpec​(BigInteger y, BigInteger p, BigInteger g)
采用公共值 y、素数模 p 和基生成器 g 的构造函数。

https://docs.oracle.com/javase/9/docs/api/javax/crypto/spec/DHPrivateKeySpec.html

DHPrivateKeySpec​(BigInteger x, BigInteger p, BigInteger g)
采用私有值 x、素数模 p 和基生成器 g 的构造函数。

现在,我知道 Bouncy Castle 有一个支持此功能的实现:

https://people.eecs.berkeley.edu/~jonah/bc/org/bouncycastle/crypto/params/DHParameters.html

但我不能使用充气城堡。

有没有办法仍然使用 DHParameterSpec/DHPublicKey/DHPrivateKey 和我缺少的 q 值?

【问题讨论】:

  • 你已经问过同样的 question。它已关闭(寻求书籍、工具、软件库的推荐,以及 SO 上不允许的更多内容),因此您将其删除。你认为它会第二次起作用吗?
  • 我改写了我在问题末尾的提问方式,以将问题更多地调整为如何使用 dhparameterspec,因此我希望这将使其符合要求。我没有尝试任何邪恶的事情,只是为我的问题寻求帮助。我确保修改了我的问题,所以它不会是一样的
  • 对不起,与旧问题相比,我没有发现任何显着差异,但也许你很幸运。
  • 我删除了询问任何其他方法的部分,并将问题重新集中在如何专门使用具有 q 值的 dhparameterspec。我还编辑了上一个问题,但随后将其删除。您可能正在与我编辑的封闭式问题进行比较。如果我严重违反规则,我深表歉意
  • 为什么要设置q值?您希望 q 值用于什么?你知道这个q值是多少吗?

标签: java cryptography private-key diffie-hellman public-key-exchange


【解决方案1】:

使用动态搜索广告 大整数 getG() 返回基数 g。 大整数 getP() 返回素数 p。 大整数 getQ() 返回子素数 q。 https://docs.oracle.com/javase/7/docs/api/java/security/spec/DSAParameterSpec.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-19
    • 1970-01-01
    • 2018-07-04
    • 1970-01-01
    • 2011-12-17
    相关资源
    最近更新 更多