我想我知道如何创建自定义加密的 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 文件然后检查其内容时,它似乎在密钥的开头和结尾有其他字符。这是正常的吗?
我不太了解其中的一些安全知识,但我正在努力学习。我做错了什么?