Para utilizar a Cifragem RSA com ruby, utilizaremos o OpenSSl.
Incluindo a biblioteca Openssl
require "openssl"
Criando uma chave privada:
chave_privada= OpenSSL::PKey::RSA.new(1024)
Segundo o algoritmo, a chave privada RSA é formada de três número primos representados pelas letras: P,Q,D.
Para saber o valor de cada uma delas é necessário somente utilizar o seguintes comandos:
chave_privada.p
chave_privada.q
chave_privada.d
Para gerar uma chave publica, a qual será usada na decifragem, é necessário apenas o seguinte comando:
chave_publica=chave_privada.public_key
A partir da chave privada consegue-se cifrar um texto por exemplo: “Brincando com RSA”
texto_cifrado=chave_privada.private_encrypt("Brincando com RSA")
Como resultado se obtém o texto:
texto_cifrado
=>”\215\322\351\35331\273\av\200\372a_k32\f\21230\336z359[\257^900>\343\345>B\335d v24\207\350\327\e\355Z\2263\bfKW06\312\216\nN35\343/\303Kr\217\254\333k%\366\2615Lz\360\253\205\352\212\303?\366P\”\372o C\24736.\233W\252\240\304\27505\23220\272M\305\303\363@Q\353B\311w\363\336\265\363\317′\270\263<\32535g\277\234#238~\316WL\335″
Para decifrar o texto acima, poderíamos utilizar a mesma variável como abaixo:
chave_privada.public_decrypt(texto_cifrado)
=> “Brincando com RSA”
Mas como dificilmente em uma mesma instância existiria cifragem e decifragem RSA, o texto da chave publica deve ser salvo e utiliza-se da seguinte forma, cria-se uma chave publica como no código abaixo:
nova_chave_publica = OpenSSL::PKey::RSA.new(chave_publica)
Assim para decifrar o texto é só utilizar o seguinte comando:
nova_chave_publica.public_decrypt(texto_cifrado)
Para saber os valores de E e N que formam a chave publica utiliza-se os seguintes comandos
chave_privada.e
chave_privada.n
Para mais informações acesse a Documentação oficial.


