Vou executar SHA256
com uma senha + salt, mas não sei quanto tempo devo fazer VARCHAR
quando configurar o banco de dados MySQL. O que é um bom comprimento?
Vou executar SHA256
com uma senha + salt, mas não sei quanto tempo devo fazer VARCHAR
quando configurar o banco de dados MySQL. O que é um bom comprimento?
Respostas:
Um sha256 tem 256 bits - como o nome indica.
Como sha256 retorna uma representação hexadecimal, 4 bits são suficientes para codificar cada caractere (em vez de 8, como para ASCII), então 256 bits representariam 64 caracteres hexadecimais, portanto, você precisa de um varchar(64)
, ou mesmo a char(64)
, pois o comprimento é sempre o mesmo , sem variar.
E a demo:
$hash = hash('sha256', 'hello, world!');
var_dump($hash);
Darei à você :
$ php temp.php
string(64) "68e656b251e67e8358bef8483ab0d51c6619f3e7a1a9f0e75838d41ff368f728"
ou seja, uma string com 64 caracteres.
varchar(65)
como líder !
... apenas dizendo.
SELECT length(to_base64(unhex(sha2('say hello to my little friend',256))))
la:, é sempre 44 qualquer que seja o comprimento da string original.
Opções de codificação para 256 bits do SHA256:
CHAR(44)
incluindo o caractere de preenchimentoCHAR(64)
BINARY(32)
=
pode ser retirado e adicionado novamente.
Eu prefiro usar BINARY (32), pois é a maneira otimizada!
Você pode inserir esses 32 dígitos hexadecimais de (00 a FF).
Portanto BINARY (32)!
UPDATE...SET hash_column=UNHEX(sha256HexString)
. Então, ao recuperá-lo, você SELECT HEX(hash_column) AS hash_column
.
Por que você faria isso VARCHAR? Isso não varia. São sempre 64 caracteres, que podem ser determinados executando qualquer coisa em uma das calculadoras online do SHA-256 .
SHA-*
senhas de hash, leia-o primeiro .