Genere hash Blowfish compatible multiplataforma (PHP/Ruby)

En PHP estamos generando algunos hashes de contraseña usando el cripta() para producir un hash de pez globo.

<?php $hash = crypt("secure password", '$2a$10$ ... salt here ... $');

Veo que ruby ​​tiene Cadena # cripta, pero el resultado que obtenemos es completamente diferente (hash mucho más corto). Mirando la página del manual para crypt (3), solo algunas distribuciones de Linux agregan soporte para Blowfish a glibc, así que asumo que Ruby no lo admite.

Ahora busqué en Google y encontré el crypt gem, pero parece estar codificado para hacer 2^16 ciclos en lugar de los 2^10 que estamos usando. También me da una excepción en Ruby 1.9.3:

Crypt::Blowfish.new("abc").encrypt_block("foo")
TypeError: can't convert String into Integer
from /Users/chris/.rbenv/versions/1.9.3-p0/lib/ruby/gems/1.9.1/gems/crypt-1.1.4/crypt/blowfish.rb:47:in `|'

¿Alguien sabe cómo podemos producir los mismos hashes de pez globo en Ruby que hemos generado en PHP?

preguntado el 02 de julio de 12 a las 07:07

1 Respuestas

La gema BCrypt hace lo que necesitamos:

BCrypt::Engine.hash_secret("bob", "$2a$10$ ... salt here ...")

Respondido 02 Jul 12, 09:07

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.