Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.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打开RSA私钥_Ruby_Encryption_Openssl_Encryption Asymmetric - Fatal编程技术网

从Ruby打开RSA私钥

从Ruby打开RSA私钥,ruby,encryption,openssl,encryption-asymmetric,Ruby,Encryption,Openssl,Encryption Asymmetric,我想我知道如何创建自定义加密的RSA密钥,但如何才能像ssh keygen那样读取加密的RSA密钥 我知道我能做到: OpenSSL::PKey::RSA.new(File.read('private_key')) Net::SSH::KeyFactory.load_private_key 'keyfile', 'passphrase' 但是OpenSSL要求我提供密码短语。。。如何将其作为参数传递给OpenSSL 我如何创建一个与ssh-keygen生成的兼容的 我这样做是为了创建私有加密

我想我知道如何创建自定义加密的RSA密钥,但如何才能像ssh keygen那样读取加密的RSA密钥

我知道我能做到:

OpenSSL::PKey::RSA.new(File.read('private_key'))
Net::SSH::KeyFactory.load_private_key 'keyfile', 'passphrase'
但是OpenSSL要求我提供密码短语。。。如何将其作为参数传递给OpenSSL

我如何创建一个与ssh-keygen生成的兼容的

我这样做是为了创建私有加密密钥:

pass = '123456'
key = OpenSSL::PKey::RSA.new(1024)
key = "0000000000000000#{key.to_der}"
c = OpenSSL::Cipher::Cipher.new('aes-256-cbc')
c.encrypt
c.key = Digest::SHA1.hexdigest(pass).unpack('a2' * 32).map {|x| x.hex}.pack('c' * 32)
c.iv = iv
encrypted_key = c.update(key)
encrypted_key << c.final
pass='123456'
key=OpenSSL::PKey::RSA.new(1024)
key=“0000000000000000{key.to_der}”
c=OpenSSL::Cipher::Cipher.new('aes-256-cbc'))
c、 加密
c、 key=Digest::SHA1.hexdigest(pass).unpack('a2'*32).map{x | x.hex}.pack('c'*32)
c、 iv=iv
加密密钥=c.update(密钥)

加密密钥我在这方面取得了一些进展。如果我使用Net::SSH库,我可以执行以下操作:

OpenSSL::PKey::RSA.new(File.read('private_key'))
Net::SSH::KeyFactory.load_private_key 'keyfile', 'passphrase'
通过阅读源代码,我还没有弄清楚该库对OpenSSL的PKey::RSA做了什么。。。然后我再次进行测试,果然,OpenSSL可以在没有Net::SSH的情况下很好地打开私钥。。。我做了太多的测试,不知怎么的,我以前没有正确地测试这个


但我仍然有创建SSH兼容密钥对的问题。。。也许我会再次去测试,并得到答案:P。。。不,我对那部分不感兴趣根据这里的博文:

您可以简单地执行以下操作:

OpenSSL::PKey::RSA.new(File.read('private_key'),'passphrase')

祝你好运