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

Lagring af SHA1-hashværdier i MySQL

Jeg ville bruge VARCHAR for variabel længde data, men ikke med fast længde data. Fordi en SHA-1-værdi altid er 160 bit lang, VARCHAR ville bare spilde en ekstra byte for længden af ​​den faste- længdefelt .

Og jeg ville heller ikke gemme værdien >SHA1 vender tilbage. Fordi den bruger kun 4 bit pr. tegn og derfor skal bruge 160/4 =40 tegn. Men hvis du bruger 8 bit pr. tegn, skal du kun bruge et 160/8 =20 tegn langt felt.

Så jeg anbefaler dig at bruge BINARY(20) og UNHEX funktion for at konvertere SHA1 værdi til binær.

Jeg sammenlignede lagerkravene for BINARY(20) og CHAR(40) .

CREATE TABLE `binary` (
    `id` int unsigned auto_increment primary key,
    `password` binary(20) not null
);
CREATE TABLE `char` (
    `id` int unsigned auto_increment primary key,
    `password` char(40) not null
);

Med millioner af poster binary(20) tager 44,56M, mens char(40) tager 64,57M.InnoDB motor.



  1. Buffere (cirkel) i PostGIS

  2. Indlejrede klasser - CustomRowMapper !! Ikke et problem længere !! - Del 1

  3. en bedre tilgang end at gemme mysql-adgangskode i almindelig tekst i konfigurationsfil?

  4. Hvad er en database? Definition, typer og komponenter