Mysql
 sql >> Database >  >> RDS >> Mysql

Differenza tra BINARY(16) e CHAR(32) durante la memorizzazione di MD5 nel database

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.