当前位置:  开发笔记 > 后端 > 正文

从Ruby打开RSA私钥

如何解决《从Ruby打开RSA私钥》经验,为你挑选了1个好方法。

我知道如何创建自定义加密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文件,然后检查其内容时,它似乎在键的开头和结尾有其他字符.这是正常的吗?

我真的不了解这些安全性的东西,但我正在努力学习.我做错了什么?



1> Andy Jeffrie..:

根据这里的博客文章:

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')

祝你好运.

推荐阅读
无名有名我无名_593
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有