我正在为我的大学课程项目编写一个 Ruby 版本的 Diffie-Hellman 密钥交换实现。我需要生成至少 500 位长度的大(安全)质数。您有什么建议吗?我应该使用 OpenSSL 库吗?如果是,您会推荐哪些函数?
使用openssl gem
OpenSSL::BN::rand
您可以指定所需的大小 - 就像这样 OpenSSL::BN::rand(212)
OpenSSL::BN::generate_prime(500)
可以生成一个 500 位的质数,就像 abdollar 所说的那样。
请确保在文件顶部添加 require 'openssl'
来包含它。
为了检查它是否是正确的位数,您可以通过运行 OpenSSL::BN::generate_prime(500).to_i.to_s(2).length
来打印出二进制数,它将打印出 500,而且最高位将是 1。