Actuellement, vous perdez la moitié de la somme de contrôle lorsque vous utilisez BINARY(16)
. Lorsque vous stockez une somme de contrôle MD5 dans BINARY(16)
vous devez le stocker sous forme de données binaires, pas codé en hexadécimal. C'est-à-dire :
INSERT INTO test (md5_binary) VALUES(UNHEX(md5("one!")));
Vous pouvez utiliser la fonction HEX pour l'encoder à nouveau en hexadécimal si vous voulez le comparer avec une autre somme de contrôle :
SELECT HEX(md5_binary) FROM test;
L'avantage d'utiliser BINARY pour stocker la somme de contrôle au lieu du texte hexadécimal est que la moitié du stockage est nécessaire.