1

I have a situation where the private key is stored as a string in the database.

> private_key
> => "-----BEGIN RSA PRIVATE KEY-----\nMIIEpk9KuPZrNC+pvJzohwXAwJwC8kIZaidMsKbOmyAz\nZBXKkUZ+gxDu4bd7InKwvjhufmnby0X+XcoPDfn/AoGAViYhxIGcQkVnvSzmdXQS\ngAgyl9LLB8MIM+q31Aflv0Vg31qjzxBb1p6Am+TwSE5rl+IWULlUAGPNAp5OLztb\nHY4DVNyfRspd5LiOoVhsqCVitFcV0\nSwZFd4EmgDlWgZ6F0Dkv/RdIzWcQNOqwQm9OXoEl30D7cbHbbDbncGNJ4oPHaNta\no3mNu4MCgYB47e229eaJIaVOTkzY2arqiq8hVbIIrqHv8bRtK93TbCM8APow7Hrd\nlUac3SGmlDbFZ486O7PfT2bblf2u4xpcvKPN6ApHpdegoN1eCwqthWnXCMETbWaM\nqavVjCaqGFSYOnCxqoiURtiQkW+u3FJaMi4joZqhU34vAnV9mn9G9w==\n-----END
> RSA PRIVATE KEY-----\n

"

How do i convert to OpenSSL:Pkey class.

#<OpenSSL::PKey::RSA:0x007fd98c80bc28>

The reason I want to do this so that I can encrypt it as follows.

cipher = OpenSSL::Cipher.new 'DES-EDE3-CBC'

key_secure = key.export cipher, pass_phrase

Since it is a string I get this error:

undefined method `export' for #<String:0x007fdb832f6b40>
5
  • 1
    You probably shouldn't paste your private key into the question. Commented Jan 31, 2018 at 18:53
  • it was just a test private key i generated. but you are right, i modified it. Commented Jan 31, 2018 at 18:59
  • 1
    @Micheal, Unfortunately, anyone can click on the link "edited x hours ago" and see what you originally posted. If you make a mistake on SO, it's preserved for eternity. :( Commented Jan 31, 2018 at 20:52
  • Where do you initialize key? Commented Jan 31, 2018 at 21:44
  • @tadman, Right there: How do i convert to OpenSSL:Pkey class. Commented Feb 1, 2018 at 4:10

1 Answer 1

3

How do i convert to OpenSSL:Pkey class

require 'openssl'

key = OpenSSL::PKey::RSA.generate(1024, 3)
encoded_str = key.to_s  #This is your string
puts encoded_str

puts '*' * 30

key = OpenSSL::PKey::RSA.new encoded_str
puts key.to_s  #Should be the same as your string

puts '*' * 30

cipher = OpenSSL::Cipher.new 'DES-EDE3-CBC'
pass_phrase = "hello world"
pem_encoded_str = key.export cipher, pass_phrase
puts pem_encoded_str


--output:--
-----BEGIN RSA PRIVATE KEY-----
MIICWwIBAAKBgQCtyWCVI8dkpH9ol9q3Ve5GUpOCvrMZWKIiMTOSn6WsQQOZU1Lw
Xb2hBjiSWA2bh1REPaW/+OwGfxHruPv80/J/4vwpezPagprcUSOdfi1coD+X4Cdd
Sd4Y81i11kjlHLVNVYtU8eDS5D8LeotIuG4Lq65HoNrHZC7DCygvBmu1cwIBAwKB
gHPblbjChO3C/5sP5yTj9C7ht6x/IhDlwWwgzQxqbnLWAmY3jKA+fmtZeww6s70E
4tgpGSql8q7/YUfQp/3ioal9EhShxMj4GlgcBxBC9RCsQd7AhF/iOVD0ZihTJib1
1A1M46jp1GagybKO+bRao/eMHr6S6pWjNHdZAxAatqDbAkEA5an7qRz3MBNJespJ
p83dYqbO2uZxjMTT24+KWjJfS7bbH3Kr9vEeZHkbptjSasjk1Gf86UNE4oC6LuBU
mSco/QJBAMG3Dt9vtd5gDqxOu3Hv5js1+uR6W+nDS6kv7v9dS2BAXkLDK5wxGo6X
Y/0758WvM4UYLNs3ogzfVdbDQkUymy8CQQCZG/0baKTKt4ZR3DEaiT5BxInnREuz
LeKSX7GRduoyeedqTHKkoL7tphJvOzbx20M4RVNGLNiXAHwfQDhmGhtTAkEAgSS0
lPUj6ZVfHYnSS/VEJ3lR7abn8SzdG3VJ/5OHlYA+1yzHvXYRtGTtU31FLnTNA2Vz
PM/BXeo5OdeBg3cSHwJAcrIdUXxPfk21dDymgmTMkj4EsLhaO6/5nGpElt2JNQ8S
tfgUq8Z2b5XXtm6QJRxAoMYFvfxMfkH93ChpHQjVVg==
-----END RSA PRIVATE KEY-----
******************************
-----BEGIN RSA PRIVATE KEY-----
MIICWwIBAAKBgQCtyWCVI8dkpH9ol9q3Ve5GUpOCvrMZWKIiMTOSn6WsQQOZU1Lw
Xb2hBjiSWA2bh1REPaW/+OwGfxHruPv80/J/4vwpezPagprcUSOdfi1coD+X4Cdd
Sd4Y81i11kjlHLVNVYtU8eDS5D8LeotIuG4Lq65HoNrHZC7DCygvBmu1cwIBAwKB
gHPblbjChO3C/5sP5yTj9C7ht6x/IhDlwWwgzQxqbnLWAmY3jKA+fmtZeww6s70E
4tgpGSql8q7/YUfQp/3ioal9EhShxMj4GlgcBxBC9RCsQd7AhF/iOVD0ZihTJib1
1A1M46jp1GagybKO+bRao/eMHr6S6pWjNHdZAxAatqDbAkEA5an7qRz3MBNJespJ
p83dYqbO2uZxjMTT24+KWjJfS7bbH3Kr9vEeZHkbptjSasjk1Gf86UNE4oC6LuBU
mSco/QJBAMG3Dt9vtd5gDqxOu3Hv5js1+uR6W+nDS6kv7v9dS2BAXkLDK5wxGo6X
Y/0758WvM4UYLNs3ogzfVdbDQkUymy8CQQCZG/0baKTKt4ZR3DEaiT5BxInnREuz
LeKSX7GRduoyeedqTHKkoL7tphJvOzbx20M4RVNGLNiXAHwfQDhmGhtTAkEAgSS0
lPUj6ZVfHYnSS/VEJ3lR7abn8SzdG3VJ/5OHlYA+1yzHvXYRtGTtU31FLnTNA2Vz
PM/BXeo5OdeBg3cSHwJAcrIdUXxPfk21dDymgmTMkj4EsLhaO6/5nGpElt2JNQ8S
tfgUq8Z2b5XXtm6QJRxAoMYFvfxMfkH93ChpHQjVVg==
-----END RSA PRIVATE KEY-----
******************************
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,73C71A1D7325EAAF

2sKeayKdmnDxHyYs35ydnt/ZRUUzgVvVl4c9ohxZWurHQwQDNAZ7j1WE+/JNo44y
dlY9LPW2PfT4fw5yC/k0uN1YPTgtOBKL9jpKfI8pcpea2fyAJzDXu8bdvWiWDnF2
9pjO/ghe1pZNdfU+yGkweIr6qQH4b6piWPtvf0VBBQnjqq7OqFDYYp1eXVal27+B
VaZLYk1nWDInUPE7bEEHY5VZLVRNg/wCQ0qPoCDbBXb3cyss9pg7ysrNNi6Fa0Yq
Z00GYK1yENDnH4mJj9VzDAC1yV8592SdW1qDzDR0QCtQ5BenWunAS61R7wyLkS0L
vCahavVGW9etAcwXUy12qysNz8MnnGT75/aTqMx6Eu1oj7Lu4orQlz7qNcb7Mtwe
5tLCRW59PT57K52KSJNjKJpAUrSZ9kJCwt9Mk+zAiRkIg48DztuF0STJ1U0qAN9V
s61tVHJAPWl9Th7xxGt6pfLErOpikqcte6tFnaMcBRqzeCVXcQfDLMY/RZJgW+34
CM54FyRH8cGDiajSnpGMsCNM3y41Mk+02yrwVA4jOvXq4yrCjCghL8SnZ9FkTTuh
6+Uuc2B2DFVbiOwDRCgaIo9jLgEu4Et400QQMnllE9RxDlFIgnCoXP8A9fhNRZu5
zuH+1K7NpKxqLIqldZdiPKLsXS/rE7CFi/u1RVcHidCnpKR2aPO47ntpLUK9jcHY
ZRpa0hoNY/5mkMgth5qJL6bD6YDkE+6Spsdpxq2f11HK9IuyiTvIav2BVHbIrXcM
voMhuSWVW9RPphY9rVxesZWmHN0VPBwwVqNg5KnbLv4=
-----END RSA PRIVATE KEY-----
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.