我需要生成一个安全素数,它的形式是2p +1,其中p也是一个特定位长的素数(比如1024位)。它将用于DH密钥交换。
我相信openssl可以通过
openssl gendh 1024
然而,此返回是base64 pem格式
-----BEGIN DH PARAMETERS-----
MIGHAoGBANzQ1j1z7RGB8XUagrGWK5a8AABecNrovcIgalv1hQdkna2PZorHtbOa
wYe1eDy1t/EztsM2Cncwvj5LBO3Zqsd5tneehKf8JoT35/q1ZznfLD8s/quBgrH8
es2xjSD/9syOMMiSv7/72GPJ8hzhLrbTgNlZ+kYBAPw/GcTlYjc7AgEC
-----END DH PARAMETERS-----我如何测试一个质数是‘安全’和一定的位长。
发布于 2011-03-22 14:44:19
@GregS有一种可能对你有用的方法。基于您告诉我的内容,我只需创建一个C二进制文件,并在BN_generate_prime(...)中使用OpenSSL函数。这就省去了所有的中间解析,尽管在混合中添加了一个单独的二进制,但它可能比前面的道路更容易。
发布于 2011-03-22 14:05:57
我同意卢克的评论。但是,如果出于某种原因,您必须使用openssl命令行,那么有几个选项,但它们只能提供给您。所有这些都不会为您做任何重要的算法;它们不会检索(p-1)/2并检查它是否为素数。
您可以使用openssl dh命令并解析输出。尝试使用和不使用-C选项,看看哪个更适合您。示例。
openssl gendh -out testdh.pem 1024
openssl dh -in testdh.pem -noout -C
openssl dh -in testdh.pem -noout如果您可以处理或更喜欢二进制,那么您可以解析由DER编码的DH结构的二进制输出。
openssl dh -in testdh.pem -outform der -out testdh.der另一个选项是解析ans1parse命令的输出:
openssl asn1parse -in testdh.pemhttps://stackoverflow.com/questions/5380218
复制相似问题