http://snippets.dzone.com/posts/show/991
e
http://rails.brentsowers.com/2007/12/aes-encryption-and-decryption-in-ruby.html
Fiz meio que uma mistura dos 2 e gerei uma biblioteca para fazer as 2 partes:
class CryptFinalmente, para se ter um valor iv único para a sessão salve o valor após o login usando um filtro ou uma chamada simples após o mesmo.
require 'openssl'
require 'digest/sha1'
def criptografa(dado,user,iv)
#primeiro conjunto email
saida = Array.new
c = OpenSSL::Cipher::Cipher.new("aes-256-cbc")
c.encrypt
# O SHA1 da conta do user ou uma coluna Hash única para cada user podem ser usados
c.key = Digest::SHA1.hexdigest(user.conta)
c.iv = iv
e = c.update(dado)
e << c.final
#concatena na saida o resultado cifrado do dado de entrada
saida << e
#CASO SEJA NECESSARIO CRIPTOGRAFAR MAIS DADOS...
#instancie novamente c e repita o processo concatenando na saida o novo valor
return saida
end
#metodo usado para excluir emails e verificar a seguranca da transacao feita por GET
def descriptografa(msg,user,iv)
c = OpenSSL::Cipher::Cipher.new("aes-256-cbc")
c.decrypt
c.key = Digest::SHA1.hexdigest(user.conta)
c.iv = iv
d = c.update(msg)
d << c.final
return d
end
end
#Criando novo valor iv e salvando na session
def new_iv
c = OpenSSL::Cipher::Cipher.new("aes-256-cbc")
c.encrypt
iv = c.random_iv
session[:valor_iv] = iv
end
Nenhum comentário:
Postar um comentário