Estoy renovando un sitio web de Ruby on Rails a PHP. Necesito generar las contraseñas que genera Devise Gem en Ruby on Rails. Tengo que saber cuál es el método hashing para la contraseña para crear el mismo método con PHP. pero no es fácil encontrar códigos dentro de Ruby on Rails como principiante. Si alguien sabe dónde debo verificar para encontrarlo, por favor, ayúdeme.Cómo generar la contraseña en PHP como lo hizo Devise Gem en Ruby on Rails
Estos dos son todo lo que he encontrado:
1) The configuration of encryptor is disabled in devise.rb like below:
# config.encryptor = :sha1
2) I read the comments very carefully then I found that they using sha512 and bcrypt as default encryptor.
# (default), :sha512 and :bcrypt. Devise also supports encryptors from others
Traté de hacer la misma contraseña cifrada de diferentes maneras con PHP:
1) sha1('--'.$password_salt.'--'.$encrypted_password);
2) sha1($password_salt.'-----'.$encrypted_password);
3) sha1('--'.$password_salt.'--'.$encrypted_password.'--');
4) sha1($password_salt.$encrypted_password);
5) sha1($encrypted_password.$password_salt);
6) substr(hash('sha512', $password_salt.$encrypted_password, false), 20);
7) substr(hash('sha512', $encrypted_password.$password_salt, false), 0, 40);
8) hash('sha512', $encrypted_password.$password_salt, false);
9) hash('sha512', $password_salt.$encrypted_password, false);
10) substr(hash('sha512', '--'.$password_salt.'--'.$encrypted_password.'--', false), 0, 40);
no pude conseguir el mismo resultado de cualquier de arriba ¿Hay alguien que pueda decirme el método de cifrado de Devise Gem?
HELP ME !!!
ps. No soy bueno en inglés. Incluso si mi inglés no es correcto, por favor no te enojes.
Estoy respondiendo a mí mismo:
El cifrador es SHA1
que estaba buscando solamente "devise.rb" en la carpeta "\ config \ inicializadores" El encriptador estaba commanted as "# config.encryptor =: sha1" Pero hay otro "devise.rb" dentro de la carpeta Ruby lib, "\ Ruby191 \ lib \ ruby \ gems \ 1.9.1 \ gems \ devise-1.0.8 \ lib \ devise.rb " Hay una configuración más ión como "@@ encriptador =: sha1"
método de cifrado utilizando SHA1 Cuando vaya al archivo a continuación podrás ver los códigos de algoritmo: \ Ruby191 \ lib \ ruby \ gemas \ 1.9.1 \ gemas \ idear-1.0.8 \ lib \ \ legado encriptores \ sha1.rb
requieren "digerir/sha1"
módulo idear encriptores módulo # = SHA1 # utiliza el algoritmo de hash SHA1 para cifrar las contraseñas. clase SHA1 < Base
# Gererates a default password digest based on stretches, salt, pepper and the # incoming password. def self.digest(password, stretches, salt, pepper) digest = pepper stretches.times { digest = self.secure_digest(salt, digest, password, pepper) } digest end private # Generate a SHA1 digest joining args. Generated token is something like # --arg1--arg2--arg3--argN-- def self.secure_digest(*tokens) ::Digest::SHA1.hexdigest('--' << tokens.flatten.join('--') << '--') end end end
final
Así que traducido a PHP
function encrypt_password($salt, $password) {
$pepper = '';
$digest = $pepper;
$stretches = 10;
for ($i=0; $i<$stretches; $i++) {
$join = '--'.$salt.'--'.$digest.'--'.$password.'--'.$pepper.'--';
$digest = Sha1($join);
}
$result = substr($digest, 0, 40);
return $result;
}
que está funcionando muy bien :-)
¿Me podría dar una contraseña/idear cifrados par contraseña para propósitos de prueba? Actualmente estoy leyendo las fuentes de diseño para una respuesta correcta y quiero probar. – GergelyPolonkai
Un vistazo rápido a través del código fuente de Devise en GitHub sugiere que, además de agregar una sal (que debe cambiar para cada usuario) al hash, Devise también agrega un valor de pimienta (que es el mismo para cada instalación) al hash , que se lee de la configuración de Devise. Por lo tanto, es posible que necesite conocer ese valor del archivo de configuración. (No soy un programador de Ruby, lo siento si lo estoy leyendo mal ...) – Jazz
Lo último que supe ... Devise estaba usando Bcrypt ... Tuve un problema similar con Coldfusion y acabo de llamar a la Biblioteca de Java como una objeto. No sé si PHP puede hacer eso ... –