从Ruby打开RSA私钥
我想我知道如何创建自定义加密的RSA密钥,但如何才能像ssh keygen那样读取加密的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生成的兼容的 我这样做是为了创建私有加密
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')
祝你好运