sql >> Base de Datos >  >> RDS >> Mysql

Diferencia entre BINARY (16) y CHAR (32) al almacenar MD5 en la base de datos

Actualmente estás perdiendo la mitad de la suma de comprobación cuando usas BINARY(16) . Cuando almacena una suma de comprobación MD5 en BINARY(16) debe almacenarlo como datos binarios, no codificado en hexadecimal. Eso es:

INSERT INTO test (md5_binary) VALUES(UNHEX(md5("one!")));

Puede usar la función HEX para codificarlo en hexadecimal nuevamente si desea compararlo a simple vista con otra suma de verificación:

SELECT HEX(md5_binary) FROM test;

El beneficio de usar BINARIO para almacenar la suma de verificación en lugar del texto hexadecimal es que se necesita la mitad del almacenamiento.