Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Diferença entre BINARY(16) e CHAR(32) ao armazenar MD5 no banco de dados


Atualmente você está perdendo metade da soma de verificação ao usar BINARY(16) . Quando você armazena uma soma de verificação MD5 em BINARY(16) você deve armazená-lo como dados binários, não codificado em hexadecimal. Aquilo é:
INSERT INTO test (md5_binary) VALUES(UNHEX(md5("one!")));

Você pode usar a função HEX para codificá-lo novamente em hexadecimal se quiser compará-lo com outra soma de verificação:
SELECT HEX(md5_binary) FROM test;

A vantagem de usar BINARY para armazenar a soma de verificação em vez de texto hexadecimal é que metade do armazenamento é necessária.