Comprimento do sal Blowfish para a função Crypt ()?

De acordo comdocumentação crypt (), o sal precisa ter 22 dígitos base 64 do alfabeto "./0-9A-Za-z".

Este é o exemplo de código que eles fornecem:

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

A primeira parte confusa é que o sal tem 25 caracteres, não 22.

Questão 1: Isso significa que o sal deveria sermais longo de 22 caracteres?

Então eu mesmo testei a função e notei algo. Se eu usar um sal de 20 caracteres, recebo este

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

Então, quando eu usei um sal de 20 caracteres, todo o sal está na saída. O que é conveniente, porque não preciso armazenar o sal em um local separado. (Eu quero usar sais aleatórios). Eu seria capaz de ler o sal de volta do hash gerado.

No entanto, se eu usar um sal de 22 caracteres como a documentação diz, ou um mais longo, o sal será cortado no final.

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

Questão 2: Então, qual é exatamente o comprimento adequado de um sal? 20? 22? Mais longo?

Questão 3: Além disso, é uma boa ideia ler o sal do hash quando chegar a hora de verificar as senhas? Em vez de armazenar o sal em um campo separado e lê-lo a partir daí. (O que parece redundante, pois o sal parece estar incluído no hash).

);

A primeira parte confusa é que o sal tem 25 caracteres, não 22.

Questão 1: Isso significa que o sal deveria sermais longo de 22 caracteres?

Então eu mesmo testei a função e notei algo. Se eu usar um sal de 20 caracteres, recebo este

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

Então, quando eu usei um sal de 20 caracteres, todo o sal está na saída. O que é conveniente, porque não preciso armazenar o sal em um local separado. (Eu quero usar sais aleatórios). Eu seria capaz de ler o sal de volta do hash gerado.

No entanto, se eu usar um sal de 22 caracteres como a documentação diz, ou um mais longo, o sal será cortado no 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

Questão 2: Então, qual é exatamente o comprimento adequado de um sal? 20? 22? Mais longo?

Questão 3: Além disso, é uma boa ideia ler o sal do hash quando chegar a hora de verificar as senhas? Em vez de armazenar o sal em um campo separado e lê-lo a partir daí. (O que parece redundante, pois o sal parece estar incluído no hash).

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

Então, quando eu usei um sal de 20 caracteres, todo o sal está na saída. O que é conveniente, porque não preciso armazenar o sal em um local separado. (Eu quero usar sais aleatórios). Eu seria capaz de ler o sal de volta do hash gerado.

No entanto, se eu usar um sal de 22 caracteres como a documentação diz, ou um mais longo, o sal será cortado no 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

Questão 2: Então, qual é exatamente o comprimento adequado de um sal? 20? 22? Mais longo?

Questão 3: Além disso, é uma boa ideia ler o sal do hash quando chegar a hora de verificar as senhas? Em vez de armazenar o sal em um campo separado e lê-lo a partir daí. (O que parece redundante, pois o sal parece estar incluído no hash).

);

A primeira parte confusa é que o sal tem 25 caracteres, não 22.

Questão 1: Isso significa que o sal deveria sermais longo de 22 caracteres?

Então eu mesmo testei a função e notei algo. Se eu usar um sal de 20 caracteres, recebo este

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

Então, quando eu usei um sal de 20 caracteres, todo o sal está na saída. O que é conveniente, porque não preciso armazenar o sal em um local separado. (Eu quero usar sais aleatórios). Eu seria capaz de ler o sal de volta do hash gerado.

No entanto, se eu usar um sal de 22 caracteres como a documentação diz, ou um mais longo, o sal será cortado no 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

Questão 2: Então, qual é exatamente o comprimento adequado de um sal? 20? 22? Mais longo?

Questão 3: Além disso, é uma boa ideia ler o sal do hash quando chegar a hora de verificar as senhas? Em vez de armazenar o sal em um campo separado e lê-lo a partir daí. (O que parece redundante, pois o sal parece estar incluído no hash).

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

Questão 2: Então, qual é exatamente o comprimento adequado de um sal? 20? 22? Mais longo?

Questão 3: Além disso, é uma boa ideia ler o sal do hash quando chegar a hora de verificar as senhas? Em vez de armazenar o sal em um campo separado e lê-lo a partir daí. (O que parece redundante, pois o sal parece estar incluído no hash).

);

A primeira parte confusa é que o sal tem 25 caracteres, não 22.

Questão 1: Isso significa que o sal deveria sermais longo de 22 caracteres?

Então eu mesmo testei a função e notei algo. Se eu usar um sal de 20 caracteres, recebo este

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

Então, quando eu usei um sal de 20 caracteres, todo o sal está na saída. O que é conveniente, porque não preciso armazenar o sal em um local separado. (Eu quero usar sais aleatórios). Eu seria capaz de ler o sal de volta do hash gerado.

No entanto, se eu usar um sal de 22 caracteres como a documentação diz, ou um mais longo, o sal será cortado no 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

Questão 2: Então, qual é exatamente o comprimento adequado de um sal? 20? 22? Mais longo?

Questão 3: Além disso, é uma boa ideia ler o sal do hash quando chegar a hora de verificar as senhas? Em vez de armazenar o sal em um campo separado e lê-lo a partir daí. (O que parece redundante, pois o sal parece estar incluído no hash).

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

Então, quando eu usei um sal de 20 caracteres, todo o sal está na saída. O que é conveniente, porque não preciso armazenar o sal em um local separado. (Eu quero usar sais aleatórios). Eu seria capaz de ler o sal de volta do hash gerado.

No entanto, se eu usar um sal de 22 caracteres como a documentação diz, ou um mais longo, o sal será cortado no 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

Questão 2: Então, qual é exatamente o comprimento adequado de um sal? 20? 22? Mais longo?

Questão 3: Além disso, é uma boa ideia ler o sal do hash quando chegar a hora de verificar as senhas? Em vez de armazenar o sal em um campo separado e lê-lo a partir daí. (O que parece redundante, pois o sal parece estar incluído no hash).

);

A primeira parte confusa é que o sal tem 25 caracteres, não 22.

Questão 1: Isso significa que o sal deveria sermais longo de 22 caracteres?

Então eu mesmo testei a função e notei algo. Se eu usar um sal de 20 caracteres, recebo este

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

Então, quando eu usei um sal de 20 caracteres, todo o sal está na saída. O que é conveniente, porque não preciso armazenar o sal em um local separado. (Eu quero usar sais aleatórios). Eu seria capaz de ler o sal de volta do hash gerado.

No entanto, se eu usar um sal de 22 caracteres como a documentação diz, ou um mais longo, o sal será cortado no 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

Questão 2: Então, qual é exatamente o comprimento adequado de um sal? 20? 22? Mais longo?

Questão 3: Além disso, é uma boa ideia ler o sal do hash quando chegar a hora de verificar as senhas? Em vez de armazenar o sal em um campo separado e lê-lo a partir daí. (O que parece redundante, pois o sal parece estar incluído no hash).

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

Questão 2: Então, qual é exatamente o comprimento adequado de um sal? 20? 22? Mais longo?

Questão 3: Além disso, é uma boa ideia ler o sal do hash quando chegar a hora de verificar as senhas? Em vez de armazenar o sal em um campo separado e lê-lo a partir daí. (O que parece redundante, pois o sal parece estar incluído no hash).

);

A primeira parte confusa é que o sal tem 25 caracteres, não 22.

Questão 1: Isso significa que o sal deveria sermais longo de 22 caracteres?

Então eu mesmo testei a função e notei algo. Se eu usar um sal de 20 caracteres, recebo este

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

Então, quando eu usei um sal de 20 caracteres, todo o sal está na saída. O que é conveniente, porque não preciso armazenar o sal em um local separado. (Eu quero usar sais aleatórios). Eu seria capaz de ler o sal de volta do hash gerado.

No entanto, se eu usar um sal de 22 caracteres como a documentação diz, ou um mais longo, o sal será cortado no 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

Questão 2: Então, qual é exatamente o comprimento adequado de um sal? 20? 22? Mais longo?

Questão 3: Além disso, é uma boa ideia ler o sal do hash quando chegar a hora de verificar as senhas? Em vez de armazenar o sal em um campo separado e lê-lo a partir daí. (O que parece redundante, pois o sal parece estar incluído no hash).

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

Então, quando eu usei um sal de 20 caracteres, todo o sal está na saída. O que é conveniente, porque não preciso armazenar o sal em um local separado. (Eu quero usar sais aleatórios). Eu seria capaz de ler o sal de volta do hash gerado.

No entanto, se eu usar um sal de 22 caracteres como a documentação diz, ou um mais longo, o sal será cortado no 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

Questão 2: Então, qual é exatamente o comprimento adequado de um sal? 20? 22? Mais longo?

Questão 3: Além disso, é uma boa ideia ler o sal do hash quando chegar a hora de verificar as senhas? Em vez de armazenar o sal em um campo separado e lê-lo a partir daí. (O que parece redundante, pois o sal parece estar incluído no hash).

);

A primeira parte confusa é que o sal tem 25 caracteres, não 22.

Questão 1: Isso significa que o sal deveria sermais longo de 22 caracteres?

Então eu mesmo testei a função e notei algo. Se eu usar um sal de 20 caracteres, recebo este

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

Então, quando eu usei um sal de 20 caracteres, todo o sal está na saída. O que é conveniente, porque não preciso armazenar o sal em um local separado. (Eu quero usar sais aleatórios). Eu seria capaz de ler o sal de volta do hash gerado.

No entanto, se eu usar um sal de 22 caracteres como a documentação diz, ou um mais longo, o sal será cortado no 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

Questão 2: Então, qual é exatamente o comprimento adequado de um sal? 20? 22? Mais longo?

Questão 3: Além disso, é uma boa ideia ler o sal do hash quando chegar a hora de verificar as senhas? Em vez de armazenar o sal em um campo separado e lê-lo a partir daí. (O que parece redundante, pois o sal parece estar incluído no hash).

questionAnswers(1)

yourAnswerToTheQuestion