I have a second algorithm that generates random 1024 char strings. This algorithm loops and detects if there's a collision between the newly generated hash and any previous one. How many iterations with no collision do I need [...]?
Con una funzione hash vuoi una distribuzione uniforme. Pertanto, se esegui l'hash dei dati casuali un paio di volte, desideri che i risultati contengano ogni risultato per lo stesso numero di volte.
Questa proprietà di distribuzione uniforme è difficile da tradurre nella tua domanda. Vuoi conoscere il numero di risultati senza collisione. Tuttavia, questo è difficile da misurare perché ogni iterazione ha una possibilità di una collisione. Questa possibilità aumenta con il numero di iterazioni. Ma poiché è una probabilità, se ottieni una collisione dopo 10.000 iterazioni non sai se la tua funzione di hash è difettosa o che sei sfortunato.
Un modo migliore sarebbe probabilmente quello di generare molti valori di hash e quindi osservare la distribuzione di 0 e 1 di ogni bit. In una distribuzione uniforme, ci si aspetta che ogni bit abbia il 50% di possibilità di essere 0 e il 50% di possibilità di essere 1.
Per quanto riguarda il calcolo della probabilità, questo articolo può aiutare a calcolare la probabilità di una collisione.
Questo articolo fornisce numeri sull'uniformità delle funzioni hash comunemente utilizzate.