I think我知道如何创建自定义加密 RSA 密钥,但如何像 ssh-keygen 那样读取加密的密钥?
我知道我可以这样做:
OpenSSL::PKey::RSA.new(File.read('private_key'))
但随后 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
另外,当我尝试无密码登录时,由 OpenSSL::PKey::RSA.new(1024) (未加密)生成的密钥不起作用(即,我将公钥复制到服务器并使用私钥来登录)登录)。
另外,当我通过 OpenSSL 打开 ssh-keygen 文件然后检查其内容时,它的密钥开头和结尾似乎有其他字符。这是正常的吗?
我不太了解其中的一些安全知识,但我正在努力学习。我做错了什么?
根据这里的博客文章:
http://stuff-things.net/2008/02/05/encrypting-lots-of-sensitive-data-with-ruby-on-rails/ http://stuff-things.net/2008/02/05/encrypting-lots-of-sensitive-data-with-ruby-on-rails/
您可以简单地执行以下操作:
OpenSSL::PKey::RSA.new(File.read('private_key'), 'passphrase')
祝你好运。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)