在Ruby中为Diffie Hellman生成大素数

在Ruby中为Diffie Hellman生成大素数,ruby,cryptography,diffie-hellman,Ruby,Cryptography,Diffie Hellman,我正在用ruby编写diffie-hellman密钥交换的实现,用于我的一个大学课程的项目。我需要生成长度至少为500位的大(安全)素数。有什么想法吗?我应该使用OpenSSL库吗?如果是这样,您建议使用什么功能?使用openssl gem OpenSSL::BN::rand 您可以指定所需的大小—就像OpenSSL::BN::rand(212)OpenSSL::BN::generate_prime(500)所说的那样。 确保将require'openssl'放在顶部,以便将其包含在ruby文件

我正在用ruby编写diffie-hellman密钥交换的实现,用于我的一个大学课程的项目。我需要生成长度至少为500位的大(安全)素数。有什么想法吗?我应该使用OpenSSL库吗?如果是这样,您建议使用什么功能?

使用openssl gem

OpenSSL::BN::rand


您可以指定所需的大小—就像OpenSSL::BN::rand(212)

OpenSSL::BN::generate_prime(500)
所说的那样。 确保将
require'openssl'
放在顶部,以便将其包含在ruby文件中

要检查二进制文件的位数是否正确,只需运行OpenSSL::BN::generate_prime(500)。To_i.To_s(2)。length即可打印出500,前导位为1


太棒了,谢谢!我在哪里可以找到这方面的文档?我查过ruby-doc.org,但我能找到的只是OpenSSL::HMAC和其他一些东西。还有,是否有一个函数可以确保它是prime?也可以尝试OpenSSL::BN::generate_prime(500)在文档方面查看OpenSSL文档,而不是gem在ruby OpenSSL gem中看不到BN_is_prime。您可以提交一个bug来添加它,或者自己将它添加到gem中。