PHP - necesita ayuda con la función crypt

  • natas
  • PHP Ninja
  • Proficient
  • No Avatar
  • Registrado: Mar 28, 2009
  • Mensajes: 305
  • Loc: AFK
  • Status: Offline

Nota Marzo 8th, 2012, 9:07 am

Código: [ Select ]
    $password = "natas12345";
    $password = crypt($password,SALT);
    echo $password;
    $pass2 = "natas12346";
    $pass2 = crypt($pass2,SALT);
    echo $pass2;
  1.     $password = "natas12345";
  2.     $password = crypt($password,SALT);
  3.     echo $password;
  4.     $pass2 = "natas12346";
  5.     $pass2 = crypt($pass2,SALT);
  6.     echo $pass2;


La sal es una constante definida en otro archivo incluido.

Mi problema es que la contraseña $ y $pass2 son exactamente el mismo valor después de cifrado. Esto no debería ser. ¿Lo que estoy haciendo mal?
Custom Web Design
  • Anonymous
  • Bot
  • No Avatar
  • Registrado: 25 Feb 2008
  • Mensajes: ?
  • Loc: Ozzuland
  • Status: Online

Nota Marzo 8th, 2012, 9:07 am

  • ScottG
  • Proficient
  • Proficient
  • No Avatar
  • Registrado: Jul 06, 2010
  • Mensajes: 280
  • Status: Offline

Nota Marzo 8th, 2012, 9:14 am

Mis pensamientos son ¿por qué utilizar una función de cripta de dos vías en lugar de una uno manera como md5 o sha1?
  • natas
  • PHP Ninja
  • Proficient
  • No Avatar
  • Registrado: Mar 28, 2009
  • Mensajes: 305
  • Loc: AFK
  • Status: Offline

Nota Marzo 8th, 2012, 9:19 am

ScottG escribió:
Mis pensamientos son ¿por qué utilizar una función de cripta de dos vías en lugar de una uno manera como md5 o sha1?


IM no utiliza una función de cripta de 2 forma.
Custom Web Design
  • ScottG
  • Proficient
  • Proficient
  • No Avatar
  • Registrado: Jul 06, 2010
  • Mensajes: 280
  • Status: Offline

Nota Marzo 8th, 2012, 9:20 am

Este fue el ejemplo de php.net

PHP Código: [ Select ]
$password = crypt('natas12345'); // let the salt be automatically generated
 
/* You should pass the entire results of crypt() as the salt for comparing a
   password, to avoid problems when different hashing algorithms are used. (As
   it says above, standard DES-based password hashing uses a 2-character salt,
   but MD5-based hashing uses 12.) */
if (crypt('natas12346', $password) == $password) {
   echo "Password verified! $password";
}
 
  1. $password = crypt('natas12345'); // let the salt be automatically generated
  2.  
  3. /* You should pass the entire results of crypt() as the salt for comparing a
  4.    password, to avoid problems when different hashing algorithms are used. (As
  5.    it says above, standard DES-based password hashing uses a 2-character salt,
  6.    but MD5-based hashing uses 12.) */
  7. if (crypt('natas12346', $password) == $password) {
  8.    echo "Password verified! $password";
  9. }
  10.  


Este código no activará sin embargo esta voluntad

PHP Código: [ Select ]
$password = crypt('natas12345'); // let the salt be automatically generated
 
/* You should pass the entire results of crypt() as the salt for comparing a
   password, to avoid problems when different hashing algorithms are used. (As
   it says above, standard DES-based password hashing uses a 2-character salt,
   but MD5-based hashing uses 12.) */
if (crypt('natas12345', $password) == $password) {
   echo "Password verified! $password";
}
 
  1. $password = crypt('natas12345'); // let the salt be automatically generated
  2.  
  3. /* You should pass the entire results of crypt() as the salt for comparing a
  4.    password, to avoid problems when different hashing algorithms are used. (As
  5.    it says above, standard DES-based password hashing uses a 2-character salt,
  6.    but MD5-based hashing uses 12.) */
  7. if (crypt('natas12345', $password) == $password) {
  8.    echo "Password verified! $password";
  9. }
  10.  
  • ScottG
  • Proficient
  • Proficient
  • No Avatar
  • Registrado: Jul 06, 2010
  • Mensajes: 280
  • Status: Offline

Nota Marzo 8th, 2012, 9:27 am

Parece más código que simplemente almacenar un md5 de sha1 para compararla con

como por ejemplo

PHP Código: [ Select ]
echo md5("natas12345") . '<br>';
echo md5("natas12346") . '<br>';
 
echo sha1("natas12345") . '<br>';
echo sha1("natas12346");
 
  1. echo md5("natas12345") . '<br>';
  2. echo md5("natas12346") . '<br>';
  3.  
  4. echo sha1("natas12345") . '<br>';
  5. echo sha1("natas12346");
  6.  
  • ScottG
  • Proficient
  • Proficient
  • No Avatar
  • Registrado: Jul 06, 2010
  • Mensajes: 280
  • Status: Offline

Nota Marzo 8th, 2012, 9:39 am

Sin embargo si aún desea utilizar la función crypt podría intentar crypting la sal como el ejemplo que se muestra arriba y abajo

PHP Código: [ Select ]
$salt = crypt('123456');
 
$password = "natas12345";
$password = crypt($password, $salt);
echo $password . '<br>';
$pass2 = "natas12346";
$pass2 = crypt($pass2, $salt);
echo $pass2;
 
  1. $salt = crypt('123456');
  2.  
  3. $password = "natas12345";
  4. $password = crypt($password, $salt);
  5. echo $password . '<br>';
  6. $pass2 = "natas12346";
  7. $pass2 = crypt($pass2, $salt);
  8. echo $pass2;
  9.  



Esto le dará resultados diferentes
  • WritingBadCode
  • Graduate
  • Graduate
  • Avatar de Usuario
  • Registrado: Abr 28, 2011
  • Mensajes: 214
  • Loc: Sweden
  • Status: Offline

Nota Marzo 8th, 2012, 10:22 am

Esto se puede leer en php punto net:

Quote:
El estándar basada en DES crypt() devuelve la sal como los dos primeros caracteres de la salida. También sólo utiliza los ocho primeros caracteres de str, así que más cadenas que comienzan con los mismos ocho personajes generará el mismo resultado (cuando se utiliza la misma sal).


Básicamente necesita cambiar el primero 8 char para el hash que diferentes (si utiliza el mismo hash, como supongo que le hacen desde su constante definida). natas123 &lt;--uno de los que deba desplazarse hacia atrás o "reemplazar".

¿Intente utilizar su batas123 ejemplo de código y hash, el resultado no será el mismo que tienes cuando hashing natas12345 y natas12346? Y también puede probar con: natas12346avjkaefaenkfaenca, resultado FUNDES siguen siendo los mismos que el original.

La mejor idea es ofc para usar algo que genera más uniquness, no desea password1234 ser liberable por una hipótesis tales como: contraseña.
  • natas
  • PHP Ninja
  • Proficient
  • No Avatar
  • Registrado: Mar 28, 2009
  • Mensajes: 305
  • Loc: AFK
  • Status: Offline

Nota Marzo 8th, 2012, 1:23 pm

WritingBadCode escribió:
Quote:
También sólo utiliza los ocho primeros caracteres de str, así que más cadenas que comienzan con los mismos ocho personajes generará el mismo resultado (cuando se utiliza la misma sal).


¡Gracias! Lo explica. No puedo creer que no leído.
Custom Web Design
  • WritingBadCode
  • Graduate
  • Graduate
  • Avatar de Usuario
  • Registrado: Abr 28, 2011
  • Mensajes: 214
  • Loc: Sweden
  • Status: Offline

Nota Marzo 9th, 2012, 7:30 am

natas escribió:
¡Gracias! Lo explica. No puedo creer que no leído.


Era fácil perderse en esa pared de texto...:)

Publicar Información

  • Total de mensajes en este tema: 9 mensajes
  • Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 148 invitados
  • No puede abrir nuevos temas en este Foro
  • No puede responder a temas en este Foro
  • No puede editar sus mensajes en este Foro
  • No puede borrar sus mensajes en este Foro
  • No puede enviar adjuntos en este Foro
 
 

© 2011 Unmelted, LLC. Ozzu® es una marca registrada de Unmelted, LLC