Mysql
 sql >> Base de données >  >> RDS >> Mysql

Différence entre BINARY(16) et CHAR(32) lors du stockage de MD5 dans la base de données

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.