Ich lade die SHA1-Passwortsammlung von Troy doch endlich mal in eine lokale Test-DB… 

12-13 Tage (!) später ist die Datenbank endlich gefüllt. Das Aufbauen eines Indexes dauert vergleichsweise kurz und ist nach 30-45 Minuten durch. Wenn man maximal die ersten 5 Byte in den Index aufnimmt, deckt man offenbar nahezu alle 551 Millionen Hashwerte ab:
+----------+-------------+----------+
| Key_name | Cardinality | Sub_part |
+----------+-------------+----------+
| 5b | 528630476 | 5 |
| 3b | 35242031 | 3 |
| 2b | 917761 | 2 |
+----------+-------------+----------+
Weniger macht kaum Sinn, da es an der Größe vom Index nicht mehr viel ändert und zu viele ähnliche Hashwerte existieren:
+---------+-----------------+-----------------+
| pages | index_name | size |
+---------+-----------------+-----------------+
| 524607 | 2b | 8.004867553711 |
| 563455 | 3b | 8.597640991211 |
| 641471 | 5b | 9.788070678711 |
| 1551744 | GEN_CLUST_INDEX | 23.677734375000 |
+---------+-----------------+-----------------+
Die Datenbank braucht nun ca. 35 GB Platz. Bei den ersten Tests reagiert sie erfreulich schnell:
> select hex(hash) from passwords where hash = unhex(sha1('987654321'));
+------------------------------------------+
| hex(hash) |
+------------------------------------------+
| BFE54CAA6D483CC3887DCE9D1B8EB91408F1EA7A |
+------------------------------------------+
1 row in set (0.043 sec)
> select hex(hash) from passwords where hash = unhex(sha1('ichbingeil'));
+------------------------------------------+
| hex(hash) |
+------------------------------------------+
| B46B9F0493CF2FFD8713EF370B0BDB930954FD9F |
+------------------------------------------+
1 row in set (0.064 sec)
> select hex(hash) from passwords where hash = unhex(sha1('amerkel'));
+------------------------------------------+
| hex(hash) |
+------------------------------------------+
| AED47862C47832858E879E57535D0D270E440011 |
+------------------------------------------+
1 row in set (0.017 sec)
> select hex(hash) from passwords where hash = unhex(sha1('happytec'));
+------------------------------------------+
| hex(hash) |
+------------------------------------------+
| F436588A6298C6088C79FF51073E9673BDA38EAB |
+------------------------------------------+
1 row in set (0.020 sec)
> select hex(hash) from passwords where hash = unhex(sha1('anexia'));
+------------------------------------------+
| hex(hash) |
+------------------------------------------+
| 60BE2C332E20397CAA74407D57E6CFFD2A7F8B2A |
+------------------------------------------+
1 row in set (0.042 sec)
> select hex(hash) from passwords where hash = unhex(sha1('netcup'));
Empty set (0.008 sec)
> select hex(hash) from passwords where hash = unhex(sha1('kbv5dtgg8hrg'));
Empty set (0.033 sec)
Alles anzeigen
Das läuft zum Test übrigens am VPS 1000 G8 Plus mit 8 GB Ram und Optane, der nebenbei andere Dinge erledigt. Die MariaDB-Konfiguration ist unverändert und Debian Standard. Ich spiele mich mal weiter damit rum… 