【发布时间】:2011-07-19 19:25:20
【问题描述】:
我需要生成一个形式为 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-----
如何从这个 base64 pem 中提取安全素数?
用我自己的代码生成自己的安全素数是否更容易?
我如何测试素数是否“安全”且具有一定的位长。
【问题讨论】:
-
安全来自什么/出于什么目的?如果您要进行 Diffie-Helman (DH) 密钥交换,为什么不使用现有代码?
-
我正在做 SPEKE,它使用 DH 并且需要一个安全的启动程序才能运行。所以没有现成的代码。
-
您是否能够以编程方式使用 OpenSSL 而不是在命令行上调用它?您使用什么语言?
-
并非如此,我编写的语言不能轻易调用 C 代码,如果是这种情况,我可以在将其编码为 pem 格式之前轻松复制我需要的部分。
-
在这种情况下,您可以在 C/C++ 中创建一个简单的可执行文件并从您的应用程序中调用它吗?似乎这比生成 PEM 然后解码它更容易。您已经在对 OpenSSL 进行外部调用。
标签: encryption openssl primes