在Ruby中生成Diffie-Hellman算法的大质数

5
我正在为我的大学课程项目编写一个 Ruby 版本的 Diffie-Hellman 密钥交换实现。我需要生成至少 500 位长度的大(安全)质数。您有什么建议吗?我应该使用 OpenSSL 库吗?如果是,您会推荐哪些函数?
2个回答

2

使用openssl gem

OpenSSL::BN::rand

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


太棒了,谢谢!我在哪里可以找到关于这个的文档?我已经查看了ruby-doc.org,但是我只能找到有关OpenSSL :: HMAC和其他一些内容的东西。 - Jarsen
还有,有没有一个函数可以确保它是质数? - Jarsen
1
还可以尝试使用 OpenSSL::BN::generate_prime(500)。 - abdollar
1
就文档而言,查看 OpenSSL 文档而不是 gem。 - abdollar
1
我在 Ruby OpenSSL gem 中找不到 BN_is_prime。你可以提交一个错误报告来添加它或者自己将其添加到 gem 中。 - abdollar

0

OpenSSL::BN::generate_prime(500) 可以生成一个 500 位的质数,就像 abdollar 所说的那样。 请确保在文件顶部添加 require 'openssl' 来包含它。

为了检查它是否是正确的位数,您可以通过运行 OpenSSL::BN::generate_prime(500).to_i.to_s(2).length 来打印出二进制数,它将打印出 500,而且最高位将是 1。

Open SSL 文档


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接