当我第一次教Diffie Helman时,我读到了以下内容:1)Alice和Bob同意p a素数,g a生成器2)Alice选择a,将g^a发送给Bob,Bob选择b,将g^b发送给Alice 3)Alice计算(g^b)^a,Bob计算(g^a)^b,因此他们都有g^{ab}我知道如何找到素数-选择一个长度为n的数字(也许确保最后一个数字不是偶数)并测试素数,如果不是,请尝试。我不知道如何找到g,我以为你先找到p,然后给定p,你就会找到g。然后我想出,你实际上选择p是一个非常安全的素数,所以q=(p-1)/2是一个素数,然后随机选取g,然后通过计算g^2和g^q来测试它们。q:如果都不是1,那么g就是一个生成元。你很快就会找到发电机的。一切都很好。但是为什么我的线人没有说如何找到g呢?你需要知道这一点才能运行算法。那是几年前的事了。然后,我想知道一个解释没有说明如何找到g的情况有多普遍。所以我在谷歌上搜索了“Diffie-Helman”,我只记录了那些有一些技术含量的内容,而不是关于其他DH的,比如椭圆曲线(Elliptic Curves)。0)原DH论文第34页:α是GF(α)的固定本原元素。没有提到如何找到素数q或素根α。1)*维基百科:.。协议使用多个整数组mod p,其中p是素数,g是素根mod p。没有提到他们如何找到p或g。2)在Wolfram的MathWorld中:他们同意两个素数g和p,其中p是大的,g是素根mod p。在实践中,选择p使(p-1)/2也是素数是很好的。他们提到(p-1)/2,但不是因为我给出的理由。(如果(p-1)/2有许多因素,则有一些离散日志的算法做得很好。)3)比较技术:Alice和Bob从决定两个数字p和g开始。(没有提到如何找到p或g。4)Searchsecurity没有麻烦地引用,但更多的是相同的,没有提到如何找到p或g。5)秘密安全维基,Alice和Bob就p和g达成一致。6)Science Direct提供了更多相同的内容。7)加州大学洛杉矶分校(UCLA)密码课程的笔记:耶!他们说怎样才能找到“辉煌”(是的,这确实是这个网站的名字)“辉煌”?你还不够聪明,意识到你需要说如何找到p和g,而openssl很难说清楚。他们的直观解释忽略了这一点,但他们在下面有详细信息和可能包含它的代码。我又看了几个,但都是一样的故事。这不是大喊大叫,甚至不是抱怨,而是一个问题:为什么DH的论述中很少提到如何找到p,g?如果你真的想做DH,你真的需要这么做。猜测1)上面的一些内容是为外行准备的,因此无法深入探讨。但有些人不是。2)其中一些是为高级观众准备的,他们知道如何做到这一点。即便如此,如何找到发电机确实值得一提。3)金发姑娘:有些纸是给外行的,他们不会注意到缺口,有些纸是给专家的,他们可以自己填空白,所以中间没有纸。我不相信这一点。4)上述问题中最奇怪的是,原文没有说明如何找到g。