Attualmente stai perdendo metà del checksum quando usi BINARY(16)
. Quando memorizzi un checksum MD5 in BINARY(16)
dovresti memorizzarlo come dati binari, non codificato in esadecimale. Cioè:
INSERT INTO test (md5_binary) VALUES(UNHEX(md5("one!")));
Puoi usare la funzione HEX per codificarlo di nuovo in esadecimale se vuoi confrontarlo a occhio nudo con un altro checksum:
SELECT HEX(md5_binary) FROM test;
Il vantaggio dell'utilizzo di BINARY per memorizzare il checksum invece del testo esadecimale è che è necessaria metà dello spazio di archiviazione.