Ce que vous décrivez s'appelle une collision. Les Collisions nécessairement exister, puisque l'algorithme SHA-1 accepte beaucoup plus de messages différents en entrée qu'elle peut produire des sorties distinctes (SHA-1 peut manger à n'importe quelle chaîne de bits jusqu'à 2^64 bits, mais les sorties de seulement 160 bits; ainsi, au moins une valeur de sortie doivent pop-up à plusieurs reprises). Cette observation est valable pour n'importe quelle fonction avec une puissance de sortie plus petit que son entrée, indépendamment du fait que la fonction est une "bonne" fonction de hachage ou pas.
En supposant que l'algorithme SHA-1 se comporte comme un "oracle aléatoire" (un objet conceptuel qui, fondamentalement, renvoie des valeurs aléatoires, avec la seule restriction qu'une fois qu'il est revenu de sortie v sur l'entrée m, il doit toujours, par la suite, de retour de v sur l'entrée m), alors la probabilité de collision, et ce, pour deux chaînes distinctes S1 et S2, devrait être de 2^(-160). Toujours sous l'hypothèse de l'algorithme SHA-1 de se comporter comme un oracle aléatoire, si vous collectez de nombreuses chaînes d'entrée, alors vous allez commencer à observer les collisions après avoir recueilli environ 2^80 chaînes.
(2^80 et pas 2^160 parce que, avec 2^80 chaînes, vous pouvez faire environ 2^159 paires de chaînes de caractères. Ceci est souvent appelé le "paradoxe d'anniversaire", car il vient comme une surprise pour la plupart des gens lorsqu'il est appliqué à des collisions sur les anniversaires. Voir la page de Wikipedia sur le sujet.)
Maintenant, nous soupçonne fortement que SHA-1 ne permet pas vraiment de se comporter comme un oracle aléatoire, parce que l'anniversaire paradoxe de la démarche qui est optimal collision algorithme de recherche d'un oracle aléatoire. Pourtant, il est publié attaque qui doit trouver une collision à environ 2^63 étapes, donc 2^17 = 131072 fois plus rapide que l'anniversaire-le paradoxe de l'algorithme. Une telle attaque ne doit pas être faisable sur un véritable oracle aléatoire. Rappelez-vous, cette attaque n'a pas été effectivement achevée, il reste théorique (certains ont essayé, mais apparemment ne pouvait pas trouver assez de puissance CPU). Pourtant, la théorie semble sain et il semble vraiment que SHA-1 n'est pas un hasard oracle. En conséquence, la probabilité de collision, ainsi, tous les paris sont éteints.
Quant à votre troisième question: pour une fonction de nbits de sortie, alors il y a forcément des collisions si vous pouvez entrer plus de 2^n messages différents, c'est à dire si l'entrée maximum la longueur du message est supérieure à n. Avec un lié m inférieur à n, la réponse n'est pas aussi facile. Si la fonction se comporte comme un oracle aléatoire, alors la probabilité de l'existence d'un risque de collision diminue avec m, et non pas de manière linéaire, mais plutôt avec une forte coupure autour de m=n/2. C'est la même analyse que le paradoxe d'anniversaire. Avec l'algorithme SHA-1, cela signifie que si m < 80 , alors les chances sont qu'il n'y a pas de collision, tandis que m > 80 fait de l'existence d'au moins une collision très probable (avec m > 160 cela devient une certitude).
Notez qu'il y a une différence entre "il existe une collision" et "vous trouverez une collision". Même lorsqu'une collision doit exister, vous avez encore votre 2^(-160) probabilité à chaque fois que vous essayez. Ce que le précédent paragraphe, on entend c'est que cette probabilité est plutôt vide de sens si vous ne pouvez pas (théoriquement) essai 2^160 paires de chaînes de caractères, par exemple parce que vous vous limitez aux chaînes de moins de 80 bits.