Ruby 为什么OpenSSL::PKey::RSA密钥是私有的和公共的?
我正在学习ruby模块 下面显示的是一个pry会话,我使用非对称公钥算法生成密钥。我还将Ruby 为什么OpenSSL::PKey::RSA密钥是私有的和公共的?,ruby,openssl,cryptography,rsa,Ruby,Openssl,Cryptography,Rsa,我正在学习ruby模块 下面显示的是一个pry会话,我使用非对称公钥算法生成密钥。我还将#private?和#public?实例方法称为: [1] pry(main)> require 'openssl' => true [2] pry(main)> alices_key = OpenSSL::PKey::RSA.new 2048 => #<OpenSSL::PKey::RSA:0x007fc0751cb028> [3] pry(main)> alice
#private?
和#public?
实例方法称为:
[1] pry(main)> require 'openssl'
=> true
[2] pry(main)> alices_key = OpenSSL::PKey::RSA.new 2048
=> #<OpenSSL::PKey::RSA:0x007fc0751cb028>
[3] pry(main)> alices_key.public?
=> true
[4] pry(main)> alices_key.private?
=> true
[1]pry(main)>需要“openssl”
=>正确
[2] pry(main)>alices_key=OpenSSL::PKey::RSA.new 2048
=> #
[3] pry(main)>alices_key.public?
=>正确
[4] pry(主)>alices_key.private?
=>正确
- 为什么
对象既是公共的又是私有的#
这取决于软件是否可以将私钥用作公钥,以及公钥是否与私钥一起存储。但这很常见,例如PKCS#11(用于软件、智能卡和HSM)中的私钥对象也包含公共指数。另一方面,Java有单独的
PrivateKey
和PublicKey
类,其中PrivateKey
不包含公共指数(或者它也不通过公共API公开它)
最后,如果不咨询最初的OpenSSL人员(我想是杨先生和哈德森先生),我们无法回答这个问题,但存储公钥也有很好的理由,而且由于公钥是公钥,因此也不会有任何影响。通常私钥的数据结构也包含公钥。它们首先在相同的密钥对生成中生成 很容易将它们存储在一起,因为公钥是模+公共指数(通常是值0x100001,Fermat的第四个素数)。当然,模数也是私钥的一部分,因此不需要重复 公钥也可用于防止某些旁道攻击,尽管这在软件中不是什么大问题
这取决于软件是否可以将私钥用作公钥,以及公钥是否与私钥一起存储。但这很常见,例如PKCS#11(用于软件、智能卡和HSM)中的私钥对象也包含公共指数。另一方面,Java有单独的
PrivateKey
和PublicKey
类,其中PrivateKey
不包含公共指数(或者它也不通过公共API公开它)
最后,如果不咨询最初的OpenSSL人员(我想是杨先生和哈德森先生),我们就无法回答这个问题,但是存储公共指数也有很好的理由,而且由于公钥是公共的,因此也不会有任何伤害