2010-11-22 25 views
67

¿Cómo puedo encriptar una cadena con MD5 en Rails 3.0? pass = MD5.hexdigest(pass) en un modelo produce uninitialized constant MyModel::MD5RoR - generación MD5

+2

Es posible que desee consultar esta publicación sobre por qué utilizar MD5/SHA como parte de su esquema de autenticación es una mala opción: http://codahale.com/how-to-safely-store-a-password/ –

+0

A punto de terminología: hashing, utilizando, por ejemplo, el algoritmo MD5, no es * cifrado *. Cifras algo cuando también puedes querer * descifrar *. Por lo general, no puede determinar el mensaje original de un hash y, a menudo, ese es exactamente el punto de usar un algoritmo hash. – Confusion

Respuesta

153

Puede usar Digest::MD5 de la biblioteca estándar de Ruby para esto.

irb(main):001:0> require 'digest/md5' 
=> true 
irb(main):002:0> Digest::MD5.hexdigest('foobar') 
=> "3858f62230ac3c915f300c664312c63f" 

Y una cosa más: MD5 es un algoritmo hash. No "cifra" nada con un algoritmo hash.

+2

'Digest :: MD5.hexdigest ('foobar')' funcionó –

+13

Una cosa más: MD5 se ha roto básicamente (en el sentido criptográfico) y no debería usarse más. Si comienza un nuevo proyecto de software, use un algoritmo hash más fuerte como SHA512 o bcrypt y no olvide agregar una sal a sus contraseñas antes de hacer hash. – joschi

+6

MD5 está roto con fines criptográficos, pero aún se puede usar para comparar archivos. Git todavía lo usa después de todo. PERO NO DROPAS LAS CONTRASEÑAS CON MD5 – AlexQueue