gpt4 book ai didi

java - 为什么每次执行时 Diffie Hellman 公共(public)参数都相同?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:49:40 25 4
gpt4 key购买 nike

我正在尝试实现 Diffie Hellman key 交换协议(protocol)。目前我停留在公共(public)参数生成。
每次我运行程序时,p 和 g 参数都是相同的(尽管方法文档说“每次调用时都会生成一个新的 key 对。”)。

有人可以向我解释一下我在这里缺少什么吗?

KeyPairGenerator kpg;
try
{
kpg = KeyPairGenerator.getInstance("DiffieHellman");
kpg.initialize(512, new SecureRandom());
KeyPair dkp = kpg.generateKeyPair();

DHParameterSpec params =
((javax.crypto.interfaces.DHPublicKey) dkp.getPublic()).getParams();
BigInteger p = params.getP();
BigInteger a = params.getG();
System.out.println(p);

} catch (Exception e)
{
e.printStackTrace();
}

最佳答案

您没有为 Diffie-Hellman 交换显式初始化 pg 值,因此它们被初始化为默认值。请注意,这些值是公开的,并且必须在双方之间共享,以便交换正常工作。我遇到了死胡同after the third SPI in the Sun JCE ,但由于您没有自己设置参数,代码正在检索用于 DSA 并将它们应用于 DH 的相同默认 pg

From the Javadoc :

In case the client does not explicitly initialize the AlgorithmParameterGenerator (via a call to an init method), each provider must supply (and document) a default initialization. For example, the Sun provider uses a default modulus prime size of 1024 bits for the generation of DSA parameters.

The documentation for the Sun implementation列出 512 位 key 的以下值:

p = fca682ce 8e12caba 26efccf7 110e526d b078b05e decbcd1e b4a208f3
ae1617ae 01f35b91 a47e6df6 3413c5e1 2ed0899b cd132acd 50d99151
bdc43ee7 37592e17
g = 678471b2 7a9cf44e e91a49c5 147db1a9 aaf244f0 5a434d64 86931d2d
14271b9e 35030b71 fd73da17 9069b32e 2935630e 1c206235 4d0da20a
6c416e50 be794ca4

关于java - 为什么每次执行时 Diffie Hellman 公共(public)参数都相同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21019348/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com