Posts de Abril, 2009

h1

Brincando com RSA no Ruby através do OpenSSL

27-04-2009

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.

h1

Problemas ao rodar o rails 2.2 no passenger

22-04-2009

Uma dica rápida, mas que pode ajudar muito, apartir da versão 2.2.0 do rails foi adicionado uma configuração que especifica a pasta padrão da qual é rodada a aplicação, ajudando assim a se ter várias aplicações em um unico domínio.
Por padrão a aplicação rails pensa que está no / do dominio, gerando o seguinte erro caso não esteja.
Exemplificando ao acessar http://www.meuservidor.com.br/minha_aplicacao .
Routing Error
No route matches "/minha_aplicacao" with {:method=>:get}

Então para resolver isto é necessário apenas adicionar a linha abaixo ao envoriment.rb trocando o “/minha_aplicacao” pela pasta onde ela esta.

config.action_controller.relative_url_root="/minha_aplicacao"

Espero ter ajudado.