Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 为什么OpenSSL::PKey::RSA密钥是私有的和公共的?_Ruby_Openssl_Cryptography_Rsa - Fatal编程技术网

Ruby 为什么OpenSSL::PKey::RSA密钥是私有的和公共的?

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

我正在学习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)> 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?
=>正确
  • 为什么
    #
    对象既是公共的又是私有的

通常,私钥的数据结构也包含公共指数。它们首先在相同的密钥对生成中生成

很容易将它们存储在一起,因为公钥是模+公共指数(通常是值0x100001,Fermat的第四个素数)。当然,模数也是私钥的一部分,因此不需要重复

公钥也可用于防止某些旁道攻击,尽管这在软件中不是什么大问题


这取决于软件是否可以将私钥用作公钥,以及公钥是否与私钥一起存储。但这很常见,例如PKCS#11(用于软件、智能卡和HSM)中的私钥对象也包含公共指数。另一方面,Java有单独的
PrivateKey
PublicKey
类,其中
PrivateKey
不包含公共指数(或者它也不通过公共API公开它)


最后,如果不咨询最初的OpenSSL人员(我想是杨先生和哈德森先生),我们无法回答这个问题,但存储公钥也有很好的理由,而且由于公钥是公钥,因此也不会有任何影响。

通常私钥的数据结构也包含公钥。它们首先在相同的密钥对生成中生成

很容易将它们存储在一起,因为公钥是模+公共指数(通常是值0x100001,Fermat的第四个素数)。当然,模数也是私钥的一部分,因此不需要重复

公钥也可用于防止某些旁道攻击,尽管这在软件中不是什么大问题


这取决于软件是否可以将私钥用作公钥,以及公钥是否与私钥一起存储。但这很常见,例如PKCS#11(用于软件、智能卡和HSM)中的私钥对象也包含公共指数。另一方面,Java有单独的
PrivateKey
PublicKey
类,其中
PrivateKey
不包含公共指数(或者它也不通过公共API公开它)

最后,如果不咨询最初的OpenSSL人员(我想是杨先生和哈德森先生),我们就无法回答这个问题,但是存储公共指数也有很好的理由,而且由于公钥是公共的,因此也不会有任何伤害