En supposant répartition uniforme dans la gamme de MD5 et SHA-1 hachages pour des chaînes aléatoires (ce qui n'est pas le cas), et en supposant que nous parlons uniquement de deux chaînes et ne parlons pas d'un pool de chaînes de caractères (donc nous éviter d'anniversaire-paradoxe-type de complexité):
Un hachage MD5 est de 128 bits, et SHA-1 est de 160. Avec les hypothèses ci-dessus, deux chaînes A et B ont une probabilité de collision P si les deux hachages entrent en collision. Donc
P(both collide) = P(MD5 collides) * P(SHA-1 collides)
Et
P(MD5 collides) = 1/(2^128)
P(SHA-1 collides) = 1/(2^160)
Donc
P(both) = 2^-128 * 2^-160 = 2^-288 ~= 2.01 x 10^-87
Encore une fois, si vous avez une piscine de chaînes et que vous essayez de déterminer les probabilités de collisions avec la piscine, vous êtes dans le domaine de l' anniversaire paradoxe et cette probabilité j'ai calculé ici ne s'applique pas. Que et les tables de hachage ne sont pas aussi uniforme qu'ils devraient l'être. En réalité, vous allez avoir beaucoup plus élevé le taux de collision, mais il sera toujours en minuscule.
MODIFIER
Car vous avez affaire à un anniversaire paradoxe de la situation, appliquer la même logique que la solution au paradoxe d'anniversaire. Regardons du point de vue d'une seule fonction de hachage:
N := the number of hashes in your pool (several hundred million)
S := the size of your hash space (2^288)
Therefore,
P(There are no collisions) = (S!)/(S^N * (S - N)!)
Imaginons que nous avons un nombre encore plus agréable de hachages comme 2^29 (environ 530 millions de dollars).
P = (2^288!)/(2^288^(2^29) * (2^288 - 2^29)!)
En bref, je ne veux même pas y penser sur le calcul de ce nombre. Je ne suis même pas sûr de savoir comment vous pouvez aller de l'estimation. Vous aurez au moins besoin d'une précision arbitraire calculateur qui permet de gérer d'énormes factorielles sans mourir.
Notez que les probabilités va suivre une courbe qui commence à 0 lors de l' N = 1 or 2
, pour atteindre 1 lors de l' N >= 2^288
, de forme similaire à la une sur la page de Wikipedia pour le paradoxe d'anniversaire.
Le paradoxe d'anniversaire atteint P = .5
lorsque N = 23
. En d'autres termes, la probabilité de collision est de 50% lorsque N est de 6% de S. Si échelles (je ne sais pas si c'est le cas), cela signifie qu'il y aura 50% de chances de collision lorsque vous avez 6% de 2^288 les tables de hachage. 6% de 2^288 est d'environ 2^284. Votre valeur de N (plusieurs centaines de millions de dollars) est nulle part près de ce. Il est pratiquement négligeable par rapport à votre S, donc je ne pense pas que vous ayez de quoi s'inquiéter. Les Collisions ne sont pas très probable.