¿Longitud de sal de Blowfish para la función Crypt ()?

De acuerdo con ladocumentación de crypt (), la sal debe tener 22 base 64 dígitos del alfabeto "./0-9A-Za-z".

Este es el ejemplo de código que dan:

crypt('rasmuslerdorf', '$2a$07$usesomesillystringforsalt

La primera parte confusa es que la sal tiene 25 caracteres, no 22.

Pregunta 1: ¿Eso significa que se supone que la sal esmás, alargar de 22 caracteres?

Luego probé la función yo mismo y noté algo. Si uso una sal de 20 caracteres, obtengo esto

// using 20 char salt: 00000000001111111111
crypt('rasmuslerdorf', '$2a$07$00000000001111111111

Entonces, cuando usé una sal de 20 caracteres, toda la sal está en la salida. Lo cual es conveniente, porque no tengo que almacenar la sal en un lugar separado. (Quiero usar sales al azar). Podría volver a leer la sal del hash generado.

Sin embargo, si uso una sal de 22 caracteres como dice la documentación, o una más larga, la sal se corta al final.

// using 22 char salt: 0000000000111111111122
crypt('rasmuslerdorf', '$2a$07$0000000000111111111122

Pregunta 2: Entonces, ¿cuál es exactamente la longitud adecuada de una sal? 20? 22? ¿Más, alargar?

Pregunta 3: Además, ¿es una buena idea leer la sal del hash cuando es hora de verificar las contraseñas? En lugar de almacenar la sal en un campo separado y leerla desde allí. (Lo que parece redundante ya que la sal parece estar incluida en el hash).

);

La primera parte confusa es que la sal tiene 25 caracteres, no 22.

Pregunta 1: ¿Eso significa que se supone que la sal esmás, alargar de 22 caracteres?

Luego probé la función yo mismo y noté algo. Si uso una sal de 20 caracteres, obtengo esto

// using 20 char salt: 00000000001111111111
crypt('rasmuslerdorf', '$2a$07$00000000001111111111$');
// $2a$07$00000000001111111111$.6Th1f3O1SYpWaEUfdz7ieidkQOkGKh2

Entonces, cuando usé una sal de 20 caracteres, toda la sal está en la salida. Lo cual es conveniente, porque no tengo que almacenar la sal en un lugar separado. (Quiero usar sales al azar). Podría volver a leer la sal del hash generado.

Sin embargo, si uso una sal de 22 caracteres como dice la documentación, o una más larga, la sal se corta al final.

// using 22 char salt: 0000000000111111111122
crypt('rasmuslerdorf', '$2a$07$0000000000111111111122$');
// $2a$07$000000000011111111112uRTfyYkWmPPMWDRM/cUAlulrBkhVGlui
// 22nd character of the salt is gone

// using 25 char salt: 0000000000111111111122222
crypt('rasmuslerdorf', '$2a$07$0000000000111111111122222$');
// $2a$07$000000000011111111112uRTfyYkWmPPMWDRM/cUAlulrBkhVGlui
// Same hash was generated as before, 21 chars of the salt are in the hash

Pregunta 2: Entonces, ¿cuál es exactamente la longitud adecuada de una sal? 20? 22? ¿Más, alargar?

Pregunta 3: Además, ¿es una buena idea leer la sal del hash cuando es hora de verificar las contraseñas? En lugar de almacenar la sal en un campo separado y leerla desde allí. (Lo que parece redundante ya que la sal parece estar incluida en el hash).

); // $2a$07$00000000001111111111$.6Th1f3O1SYpWaEUfdz7ieidkQOkGKh2

Entonces, cuando usé una sal de 20 caracteres, toda la sal está en la salida. Lo cual es conveniente, porque no tengo que almacenar la sal en un lugar separado. (Quiero usar sales al azar). Podría volver a leer la sal del hash generado.

Sin embargo, si uso una sal de 22 caracteres como dice la documentación, o una más larga, la sal se corta al final.

// using 22 char salt: 0000000000111111111122
crypt('rasmuslerdorf', '$2a$07$0000000000111111111122$');
// $2a$07$000000000011111111112uRTfyYkWmPPMWDRM/cUAlulrBkhVGlui
// 22nd character of the salt is gone

// using 25 char salt: 0000000000111111111122222
crypt('rasmuslerdorf', '$2a$07$0000000000111111111122222$');
// $2a$07$000000000011111111112uRTfyYkWmPPMWDRM/cUAlulrBkhVGlui
// Same hash was generated as before, 21 chars of the salt are in the hash

Pregunta 2: Entonces, ¿cuál es exactamente la longitud adecuada de una sal? 20? 22? ¿Más, alargar?

Pregunta 3: Además, ¿es una buena idea leer la sal del hash cuando es hora de verificar las contraseñas? En lugar de almacenar la sal en un campo separado y leerla desde allí. (Lo que parece redundante ya que la sal parece estar incluida en el hash).

);

La primera parte confusa es que la sal tiene 25 caracteres, no 22.

Pregunta 1: ¿Eso significa que se supone que la sal esmás, alargar de 22 caracteres?

Luego probé la función yo mismo y noté algo. Si uso una sal de 20 caracteres, obtengo esto

// using 20 char salt: 00000000001111111111
crypt('rasmuslerdorf', '$2a$07$00000000001111111111$');
// $2a$07$00000000001111111111$.6Th1f3O1SYpWaEUfdz7ieidkQOkGKh2

Entonces, cuando usé una sal de 20 caracteres, toda la sal está en la salida. Lo cual es conveniente, porque no tengo que almacenar la sal en un lugar separado. (Quiero usar sales al azar). Podría volver a leer la sal del hash generado.

Sin embargo, si uso una sal de 22 caracteres como dice la documentación, o una más larga, la sal se corta al final.

// using 22 char salt: 0000000000111111111122
crypt('rasmuslerdorf', '$2a$07$0000000000111111111122$');
// $2a$07$000000000011111111112uRTfyYkWmPPMWDRM/cUAlulrBkhVGlui
// 22nd character of the salt is gone

// using 25 char salt: 0000000000111111111122222
crypt('rasmuslerdorf', '$2a$07$0000000000111111111122222$');
// $2a$07$000000000011111111112uRTfyYkWmPPMWDRM/cUAlulrBkhVGlui
// Same hash was generated as before, 21 chars of the salt are in the hash

Pregunta 2: Entonces, ¿cuál es exactamente la longitud adecuada de una sal? 20? 22? ¿Más, alargar?

Pregunta 3: Además, ¿es una buena idea leer la sal del hash cuando es hora de verificar las contraseñas? En lugar de almacenar la sal en un campo separado y leerla desde allí. (Lo que parece redundante ya que la sal parece estar incluida en el hash).

); // $2a$07$000000000011111111112uRTfyYkWmPPMWDRM/cUAlulrBkhVGlui // 22nd character of the salt is gone // using 25 char salt: 0000000000111111111122222 crypt('rasmuslerdorf', '$2a$07$0000000000111111111122222

Pregunta 2: Entonces, ¿cuál es exactamente la longitud adecuada de una sal? 20? 22? ¿Más, alargar?

Pregunta 3: Además, ¿es una buena idea leer la sal del hash cuando es hora de verificar las contraseñas? En lugar de almacenar la sal en un campo separado y leerla desde allí. (Lo que parece redundante ya que la sal parece estar incluida en el hash).

);

La primera parte confusa es que la sal tiene 25 caracteres, no 22.

Pregunta 1: ¿Eso significa que se supone que la sal esmás, alargar de 22 caracteres?

Luego probé la función yo mismo y noté algo. Si uso una sal de 20 caracteres, obtengo esto

// using 20 char salt: 00000000001111111111
crypt('rasmuslerdorf', '$2a$07$00000000001111111111$');
// $2a$07$00000000001111111111$.6Th1f3O1SYpWaEUfdz7ieidkQOkGKh2

Entonces, cuando usé una sal de 20 caracteres, toda la sal está en la salida. Lo cual es conveniente, porque no tengo que almacenar la sal en un lugar separado. (Quiero usar sales al azar). Podría volver a leer la sal del hash generado.

Sin embargo, si uso una sal de 22 caracteres como dice la documentación, o una más larga, la sal se corta al final.

// using 22 char salt: 0000000000111111111122
crypt('rasmuslerdorf', '$2a$07$0000000000111111111122$');
// $2a$07$000000000011111111112uRTfyYkWmPPMWDRM/cUAlulrBkhVGlui
// 22nd character of the salt is gone

// using 25 char salt: 0000000000111111111122222
crypt('rasmuslerdorf', '$2a$07$0000000000111111111122222$');
// $2a$07$000000000011111111112uRTfyYkWmPPMWDRM/cUAlulrBkhVGlui
// Same hash was generated as before, 21 chars of the salt are in the hash

Pregunta 2: Entonces, ¿cuál es exactamente la longitud adecuada de una sal? 20? 22? ¿Más, alargar?

Pregunta 3: Además, ¿es una buena idea leer la sal del hash cuando es hora de verificar las contraseñas? En lugar de almacenar la sal en un campo separado y leerla desde allí. (Lo que parece redundante ya que la sal parece estar incluida en el hash).

); // $2a$07$00000000001111111111$.6Th1f3O1SYpWaEUfdz7ieidkQOkGKh2

Entonces, cuando usé una sal de 20 caracteres, toda la sal está en la salida. Lo cual es conveniente, porque no tengo que almacenar la sal en un lugar separado. (Quiero usar sales al azar). Podría volver a leer la sal del hash generado.

Sin embargo, si uso una sal de 22 caracteres como dice la documentación, o una más larga, la sal se corta al final.

// using 22 char salt: 0000000000111111111122
crypt('rasmuslerdorf', '$2a$07$0000000000111111111122$');
// $2a$07$000000000011111111112uRTfyYkWmPPMWDRM/cUAlulrBkhVGlui
// 22nd character of the salt is gone

// using 25 char salt: 0000000000111111111122222
crypt('rasmuslerdorf', '$2a$07$0000000000111111111122222$');
// $2a$07$000000000011111111112uRTfyYkWmPPMWDRM/cUAlulrBkhVGlui
// Same hash was generated as before, 21 chars of the salt are in the hash

Pregunta 2: Entonces, ¿cuál es exactamente la longitud adecuada de una sal? 20? 22? ¿Más, alargar?

Pregunta 3: Además, ¿es una buena idea leer la sal del hash cuando es hora de verificar las contraseñas? En lugar de almacenar la sal en un campo separado y leerla desde allí. (Lo que parece redundante ya que la sal parece estar incluida en el hash).

);

La primera parte confusa es que la sal tiene 25 caracteres, no 22.

Pregunta 1: ¿Eso significa que se supone que la sal esmás, alargar de 22 caracteres?

Luego probé la función yo mismo y noté algo. Si uso una sal de 20 caracteres, obtengo esto

// using 20 char salt: 00000000001111111111
crypt('rasmuslerdorf', '$2a$07$00000000001111111111$');
// $2a$07$00000000001111111111$.6Th1f3O1SYpWaEUfdz7ieidkQOkGKh2

Entonces, cuando usé una sal de 20 caracteres, toda la sal está en la salida. Lo cual es conveniente, porque no tengo que almacenar la sal en un lugar separado. (Quiero usar sales al azar). Podría volver a leer la sal del hash generado.

Sin embargo, si uso una sal de 22 caracteres como dice la documentación, o una más larga, la sal se corta al final.

// using 22 char salt: 0000000000111111111122
crypt('rasmuslerdorf', '$2a$07$0000000000111111111122$');
// $2a$07$000000000011111111112uRTfyYkWmPPMWDRM/cUAlulrBkhVGlui
// 22nd character of the salt is gone

// using 25 char salt: 0000000000111111111122222
crypt('rasmuslerdorf', '$2a$07$0000000000111111111122222$');
// $2a$07$000000000011111111112uRTfyYkWmPPMWDRM/cUAlulrBkhVGlui
// Same hash was generated as before, 21 chars of the salt are in the hash

Pregunta 2: Entonces, ¿cuál es exactamente la longitud adecuada de una sal? 20? 22? ¿Más, alargar?

Pregunta 3: Además, ¿es una buena idea leer la sal del hash cuando es hora de verificar las contraseñas? En lugar de almacenar la sal en un campo separado y leerla desde allí. (Lo que parece redundante ya que la sal parece estar incluida en el hash).

); // $2a$07$000000000011111111112uRTfyYkWmPPMWDRM/cUAlulrBkhVGlui // Same hash was generated as before, 21 chars of the salt are in the hash

Pregunta 2: Entonces, ¿cuál es exactamente la longitud adecuada de una sal? 20? 22? ¿Más, alargar?

Pregunta 3: Además, ¿es una buena idea leer la sal del hash cuando es hora de verificar las contraseñas? En lugar de almacenar la sal en un campo separado y leerla desde allí. (Lo que parece redundante ya que la sal parece estar incluida en el hash).

);

La primera parte confusa es que la sal tiene 25 caracteres, no 22.

Pregunta 1: ¿Eso significa que se supone que la sal esmás, alargar de 22 caracteres?

Luego probé la función yo mismo y noté algo. Si uso una sal de 20 caracteres, obtengo esto

// using 20 char salt: 00000000001111111111
crypt('rasmuslerdorf', '$2a$07$00000000001111111111$');
// $2a$07$00000000001111111111$.6Th1f3O1SYpWaEUfdz7ieidkQOkGKh2

Entonces, cuando usé una sal de 20 caracteres, toda la sal está en la salida. Lo cual es conveniente, porque no tengo que almacenar la sal en un lugar separado. (Quiero usar sales al azar). Podría volver a leer la sal del hash generado.

Sin embargo, si uso una sal de 22 caracteres como dice la documentación, o una más larga, la sal se corta al final.

// using 22 char salt: 0000000000111111111122
crypt('rasmuslerdorf', '$2a$07$0000000000111111111122$');
// $2a$07$000000000011111111112uRTfyYkWmPPMWDRM/cUAlulrBkhVGlui
// 22nd character of the salt is gone

// using 25 char salt: 0000000000111111111122222
crypt('rasmuslerdorf', '$2a$07$0000000000111111111122222$');
// $2a$07$000000000011111111112uRTfyYkWmPPMWDRM/cUAlulrBkhVGlui
// Same hash was generated as before, 21 chars of the salt are in the hash

Pregunta 2: Entonces, ¿cuál es exactamente la longitud adecuada de una sal? 20? 22? ¿Más, alargar?

Pregunta 3: Además, ¿es una buena idea leer la sal del hash cuando es hora de verificar las contraseñas? En lugar de almacenar la sal en un campo separado y leerla desde allí. (Lo que parece redundante ya que la sal parece estar incluida en el hash).

); // $2a$07$00000000001111111111$.6Th1f3O1SYpWaEUfdz7ieidkQOkGKh2

Entonces, cuando usé una sal de 20 caracteres, toda la sal está en la salida. Lo cual es conveniente, porque no tengo que almacenar la sal en un lugar separado. (Quiero usar sales al azar). Podría volver a leer la sal del hash generado.

Sin embargo, si uso una sal de 22 caracteres como dice la documentación, o una más larga, la sal se corta al final.

// using 22 char salt: 0000000000111111111122
crypt('rasmuslerdorf', '$2a$07$0000000000111111111122$');
// $2a$07$000000000011111111112uRTfyYkWmPPMWDRM/cUAlulrBkhVGlui
// 22nd character of the salt is gone

// using 25 char salt: 0000000000111111111122222
crypt('rasmuslerdorf', '$2a$07$0000000000111111111122222$');
// $2a$07$000000000011111111112uRTfyYkWmPPMWDRM/cUAlulrBkhVGlui
// Same hash was generated as before, 21 chars of the salt are in the hash

Pregunta 2: Entonces, ¿cuál es exactamente la longitud adecuada de una sal? 20? 22? ¿Más, alargar?

Pregunta 3: Además, ¿es una buena idea leer la sal del hash cuando es hora de verificar las contraseñas? En lugar de almacenar la sal en un campo separado y leerla desde allí. (Lo que parece redundante ya que la sal parece estar incluida en el hash).

);

La primera parte confusa es que la sal tiene 25 caracteres, no 22.

Pregunta 1: ¿Eso significa que se supone que la sal esmás, alargar de 22 caracteres?

Luego probé la función yo mismo y noté algo. Si uso una sal de 20 caracteres, obtengo esto

// using 20 char salt: 00000000001111111111
crypt('rasmuslerdorf', '$2a$07$00000000001111111111$');
// $2a$07$00000000001111111111$.6Th1f3O1SYpWaEUfdz7ieidkQOkGKh2

Entonces, cuando usé una sal de 20 caracteres, toda la sal está en la salida. Lo cual es conveniente, porque no tengo que almacenar la sal en un lugar separado. (Quiero usar sales al azar). Podría volver a leer la sal del hash generado.

Sin embargo, si uso una sal de 22 caracteres como dice la documentación, o una más larga, la sal se corta al final.

// using 22 char salt: 0000000000111111111122
crypt('rasmuslerdorf', '$2a$07$0000000000111111111122$');
// $2a$07$000000000011111111112uRTfyYkWmPPMWDRM/cUAlulrBkhVGlui
// 22nd character of the salt is gone

// using 25 char salt: 0000000000111111111122222
crypt('rasmuslerdorf', '$2a$07$0000000000111111111122222$');
// $2a$07$000000000011111111112uRTfyYkWmPPMWDRM/cUAlulrBkhVGlui
// Same hash was generated as before, 21 chars of the salt are in the hash

Pregunta 2: Entonces, ¿cuál es exactamente la longitud adecuada de una sal? 20? 22? ¿Más, alargar?

Pregunta 3: Además, ¿es una buena idea leer la sal del hash cuando es hora de verificar las contraseñas? En lugar de almacenar la sal en un campo separado y leerla desde allí. (Lo que parece redundante ya que la sal parece estar incluida en el hash).

Respuestas a la pregunta(1)

Su respuesta a la pregunta