Estoy leyendo sobre función crypt () de PHP. Tengo algunas preguntas al respecto -
-
¿Cuál es el significado del signo '$' al final de la cadena de sal que veo en la mayoría de los ejemplos? El manual no dice específicamente nada acerca de terminar la cadena de sal con él.
-
¿Hay alguna forma de poder extraer solo la porción de sal del hash? Sé que probablemente no sea necesario, ya que la función crypt () lo hará internamente cuando haga una comparación. Pero solo por el gusto de hacerlo. Sólo para que yo vea la sal. Para egs considere este código
$pass = 'secret'; $salt = '$2y$07$usesomesillystringforsalt$'; echo crypt($pass, $salt);
El resultado de esto es$2y$07$usesomesillystringforex.u2VJUMLRWaJNuw0Hu2FvCEimdeYVO
y no estoy seguro del límite entre la sal y el hash. ¿La 'e' en la sub cadena 'forex' es parte de la sal o el hash? Sería mucho más fácil si pudiera extraer la parte de sal. -
También el manual crypt () dice
... Blowfish hashing con una sal de la siguiente manera: "$ 2a $", "$ 2x $" o "$ 2y $", un parámetro de costo de dos dígitos, "$" y 22 caracteres del alfabeto ". / 0-9A-Za-z "....
Según esto, espero 22 caracteres después del signo $ después del parámetro de costo. Pero considera este código
$pass = 'secret'; $salt = '$2y$07$somesillystring$'; echo crypt($pass, $salt);
La salida de esto es$2y$07$somesillystring$$$$$$.O6JLPmGlDvy4BicGmkuBD.DN8OYiIoG
. Mi pregunta es por qué se rellena solo hasta 21 caracteres después del signo $ después del parámetro de costo. Esperaba que se rellenara hasta 22 caracteres.