2010-11-22 10 views
67

Come posso crittografare una stringa con MD5 in Rails 3.0? pass = MD5.hexdigest(pass) in un modello cede uninitialized constant MyModel::MD5RoR - Generazione MD5

+2

Si potrebbe voler controllare questo post sul motivo per cui l'utilizzo di MD5/SHA come parte del proprio schema di autenticazione è una scelta sbagliata: http://codahale.com/how-to-safely-store-a-password/ –

+0

A punto di terminologia: hashing, ad es l'algoritmo MD5, non è * crittografia *. Si crittografa qualcosa quando si può anche voler essere in grado di * decodificarlo *. Di solito non è possibile determinare il messaggio originale da un hash e spesso questo è esattamente il punto di utilizzo di un algoritmo di hashing. – Confusion

risposta

153

È possibile utilizzare Digest::MD5 dalla libreria standard di Ruby per questo.

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

E un'altra cosa: MD5 è un algoritmo di hash. Non "crittografare" nulla con un algoritmo di hash.

+2

'Digest :: MD5.hexdigest ('foobar')' ha funzionato –

+13

Un'ultima cosa: MD5 è stato fondamentalmente rotto (nel senso crittografico) e non dovrebbe più essere usato. Se si avvia un nuovo progetto software, utilizzare un algoritmo di hash più forte come SHA512 o bcrypt e non dimenticare di aggiungere un sale alle password prima di eseguirne l'hashing. – joschi

+6

MD5 è rotto per scopi crittografici, ma può ancora essere utilizzato per confrontare i file. Git lo usa ancora, dopotutto. MA NON FARE LE PASSWORD CON MD5 – AlexQueue