Aloha ;)
Wie oft könnte man mit rand() wohl 200 oder 2000 Salts mit 16 Zeichen aus [0-9A-Za-z/.] konstruieren bis man das erste Mal den Fall hat, dass dabei pseudozufällig 2 gleiche Salts in der gleichen Gruppe entstehen? (Das ist das einzige, um was es geht!) Ein paar Millionen oder ein paar Billionen mal?
Wer Fehler findet mag's korrigieren:
Da brauch ich nicht lang suchen.
[0-9A-Za-z/.] -> 58 Symbole
Salts mit 16 Zeichen -> 16 Stellen
58^16 = 16400152899115243850138976256 mögliche Iterationen
Durchschnittlich wird also (bei perfektem Zufall) aller 58^16/2 = 8200076449557621925069488128 Versuchen der gleiche Salt wie ein bestimmter (z.B.)vorheriger erzeugt.
[Rechnerei]
Dann dauert es also durchschnittlich 410003822477881096253 Sekunden bis eine Datei erzeugt wurde, die 200 Salts enthält von denen mindestens 2 identisch sind.
Du ignorierst hier zwei Dinge, die deine Argumentation ad absurdum führen.
1.: Du sprichst hier von perfektem Zufall und baust darauf deine Argumentation darauf auf. Ja was bitte ist denn deiner Meinung nach ein kryptographisch sicherer Zufallsgenerator, wenn nicht einer, der im Gegensatz zu einem stinknormalen Zufallsgenerator genau diesem perfekten Zufall möglichst nahe kommt? Deine Argumentation, warum man diese Variante nicht benötigt, nimmt diese Variante zur Grundlage - was glaubst du, wo du damit landest?
2.: Deine Rechnung ist von vorne bis hinten eine Milchmädchenrechnung, da du das Geburtstagsparadoxon und die dahinterstehende Erkenntnis völlig vernachlässigst. Es geht gar nicht darum, dass der gleiche Salt wie ein bestimmter erzeugt wird. Das potenzielle Problem entsteht dann, wenn zwei beliebige Salts übereinstimmen, und dafür gelten ganz andere Wahrscheinlichkeiten.
Und um es nochmal ganz deutlich zu sagen: Du arbeitest dich hier an einem Detail der ganzen Geschichte ab, bei dem es nur darum geht, wie sicher der Zufallszahlengenerator ist - und ohne, dass es einen etwas kosten würde, einen kryptographisch sicheren Zufallszahlengenerator zu benutzen, versuchst du einem hier vorzurechnen, dass es ja sowieso egal ist und man deshalb auch den weniger sicheren benutzen kann. What the actual fuck?
Gerade im Bereich Sicherheit geht es darum, alle einfach umsetzbaren Mittel, die zu einem Plus an Sicherheit führen, anzuwenden, um eine größtmögliche Sicherheit zu erhalten. Es geht nicht darum, ein System zu implementieren, dass möglichst einfache Mittel verwendet, um damit eine Sicherheit zu erhalten, die Schätzungen zufolge für aktuell gängige Rechenleistungen schon ausreichen wird.
Ich werde das Gefühl nicht los, dass du hier aus persönlichen Gründen irgendwo einen Punkt setzen willst, dir gleichzeitig aber die Felle davonschwimmen und du deshalb versuchst, dich auf eine Aussage zu stützen, deren Bedeutung du kleinreden kannst.
Falls das so ist: lass das doch einfach. Das kostet nur alle hier Beteiligten Zeit. Weiterbringen tut das niemanden.
Grüße,
RIDER