Ruby, как преобразовать строку в открытый ключ RSA - PullRequest
0 голосов
/ 11 июня 2018

Мне нужно использовать шифрование RSA для кодирования сообщения.Я храню закрытые и открытые ключи в двух отдельных текстовых файлах, но я могу получить только кодирование сообщения.Мне нужен способ преобразования строки в ключ RSA, чтобы я мог расшифровать сообщение.

Мой код:

require 'openssl'
require 'base64'


if File.exist?("./pub_key.txt")

  #Keys are strings, I can encrypt but not decrypt a message
  pri = File.read("./pri_key.txt")
  pub = File.read("./pub_key.txt")

  puts pub

  string = 'Hello World!';

  rsa_public_key = OpenSSL::PKey::RSA.new(pub)
  encrypted_string = Base64.encode64(rsa_public_key.public_encrypt(string))

  puts encrypted_string 

  # This throws an error
  # Because 'pri' is a string, don't know how to cast it to the right type
  #my_string = pri.private_decrypt(Base64.decode64(encrypted_string))

  puts "The decoded message"
  #puts my_string


end

1 Ответ

0 голосов
/ 11 июня 2018

Я исправил код

Оказывается, мне просто нужна была эта строка:

rsa_private_key = OpenSSL::PKey::RSA.new(pri)

Полный рабочий код

require 'openssl'
require 'base64'


if File.exist?("./pub_key.txt")

  #Keys are strings, I can encrypt but not decrypt a message
  pri = File.read("./pri_key.txt")
  pub = File.read("./pub_key.txt")

  puts pub

  string = 'Hello World!';

  rsa_public_key = OpenSSL::PKey::RSA.new(pub)
  rsa_private_key = OpenSSL::PKey::RSA.new(pri)
  encrypted_string = Base64.encode64(rsa_public_key.public_encrypt(string))

  puts encrypted_string 

  # This throws an error
  # Because 'pri' is a string, don't know how to cast it to the right type
  my_string = rsa_private_key .private_decrypt(Base64.decode64(encrypted_string))

  puts "The decoded message"
  puts my_string


end

Спасибо за ваше время!Программирование резиновой утки работает:)

...