Нужен работающий пример RSA для частного открытого ключа RSA - PullRequest
0 голосов
/ 29 мая 2018

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

Пока мой код:

require 'openssl'
require 'base64'


key = OpenSSL::PKey::RSA.generate(2048)

pri_key = key
pub_key = key.public_key

string = 'Hello World!';

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

puts "Encrypted Message:"
puts encrypted_string

# This creates an error
my_string = pri_key.private_decrypt(encrypted_string)


puts "The decoded message"
puts my_string

Выдает эту ошибку после печати закодированного сообщения

Example Decrypt.txt:25:in `private_decrypt': data greater than mod len (OpenSSL::PKey::RSAError)
        from Example Decrypt.txt:25:in `<main>'

1 Ответ

0 голосов
/ 29 мая 2018

Вы кодируете зашифрованную строку на основе 64, но не расшифровываете ее перед расшифровкой.Поскольку строка в кодировке Base 64 длиннее, чем зашифрованная строка, и длиннее, чем модуль, вы получите ошибку.

Попробуйте выполнить декодирование Base 64 перед шифрованием:

my_string = pri_key.private_decrypt(Base64.decode64(encrypted_string))
...