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.