Double Possible:
Comment se fait-MD5 valeurs de hachage ne sont pas réversibles?J'ai lu une question sur MD5, et il m'a fait me souvenir de quelque chose qui me croit rêver. Question très simple, et je suis désolé si c'est pas un bon. Je ne comprends juste pas comment vous convertir quelque chose à une chose en utilisant un algorithme, et il n'y a pas moyen de le convertir en arrière à l'aide de l'algorithme dans le sens inverse.
Alors, comment est-ce possible?
Aussi, depuis plusieurs chaînes de caractères peuvent créer le même hash MD5, parce qu'elle est moins de données que la chaîne d'entrée, comment le feriez pour tout autre système de hachage sera mieux?
Réponses
Trop de publicités?Fondamentalement, c'est parce que la sortie de MD5 contient moins d'informations que l'entrée. C'est ce qui distingue un algorithme de hachage à partir d'un algorithme de chiffrement.
Voici un exemple simple: imaginer un algorithme pour calculer le hash d'un numéro à 10 chiffres. L'algorithme est le retour sur les 2 derniers chiffres." Si je prends la valeur de hachage de 8023798734, je reçois 34, mais si vous aviez le 34, vous n'avez aucun moyen de dire ce que le numéro d'origine est parce que l'algorithme de hachage jetés 8 chiffres la valeur de l'information. Il est similaire à l'aide de MD5, sauf que le hash est calculé par l'intermédiaire d'une procédure complexe, au lieu de simplement hacher une partie des données.
EDIT: en réponse à la modifier dans la question, c'est effectivement une question intéressante. Pour une chose, la probabilité d'une collision (trouver deux entrées qui donnent le même résultat) est fondamentalement 1 divisé par le nombre possible de hachage sorties. Les Collisions sont une caractéristique indésirable de hachages dans le sens que vous voulez faire aussi peu que possible, d'une façon à obtenir un meilleur algorithme de hachage est d'utiliser une table de hachage avec une plus longue sortie. Dans les chiffres de l'exemple ci-dessus, en prenant les 4 derniers chiffres au lieu de les 2 derniers chiffres réduit la probabilité de collision de 1 à 10000 au lieu de 1 à 100, de sorte qu'il est plus probable que tous les 10 chiffres, quelle que soit la série, vous avez différentes valeurs de hachage.
Il y a aussi la question de la sécurité cryptographique. Lorsque vous souhaitez utiliser une table de hachage pour s'assurer que certaines données n'est pas altéré, il est souhaitable que celui qui fait la falsification peut pas prédire quels sont les moyens de produire une donnée de sortie. S'ils le pouvaient, ils seraient en mesure de modifier les données d'entrée de telle façon que la sortie (le hash) reste le même. Revenir aux chiffres, une fois, disons que je vais vous envoyer la nombre 1879483129 et il est extrêmement important que ce nombre est à vous inchangée. Je pourrais vous appeler et vous dire la valeur de hachage de le nombre, qui serait de 29, et de cette façon, si quelque chose s'est passé pour les données en transit, vous le sauriez. (Enfin pas dans ce cas car c'est un inutile algorithme de hachage, mais vous obtenez l'essentiel ;-) Cependant, depuis le "2 derniers chiffres" algorithme n'est pas cryptographique sécurisé, un infâme pirate peut modifier le numéro en cours de route, par exemple, 5555555529 et vous ne savez pas la différence.
Il a récemment été montré que le MD5 n'est pas cryptographique sécurisé, ou du moins, pas autant que nous le voudrions. Cela signifie qu'il est possible de trouver différentes entrées qui correspondent à aucune donnée de sortie. C'est tout de même une bonne algorithme pour la protection contre les bits aléatoires flips et autres, mais si il y a une chance que quelqu'un pourrait vouloir intentionnellement corrompre vos données, vous devriez vraiment utiliser quelque chose de plus sûr, comme SHA-256.
Je ne comprends juste pas comment vous convertir quelque chose à une chose en utilisant un algorithme, et il n'y a pas moyen de le convertir en arrière à l'aide de l'algorithme dans le sens inverse.
Vous pouvez transformer une vache en hamburger, mais vous ne pouvez pas tourner à hamburger dans une vache.
La transformation réduit de données qui existe en la détruisant, et que les données ne peuvent pas être récupérés.
En réponse à la deuxième partie de votre question (la réponse à la première partie ayant été plus que suffisamment donné par les autres ci-dessus): MD5 est considéré comme faible en raison des preuves d'attaques contre le code (c'est à dire, les modifications qui peuvent être apportées dans le texte brut qui n'entraînent pas de changements dans la somme MD5). D'autres techniques de hachage peut-être pas aussi facilement susceptibles d'être essentiellement arbitraire des collisions de hachage (au moins un tel arbitraire collisions n'ont pas, encore, été montré pour être possible avec le SHA-2 jeux de hache, etc.), et donc, un attaquant est moins susceptibles d'être en mesure de reproduire un hachage hachage dans un non-MD5 technique (en théorie, bien sûr, les attaques par collision de hachage sont possibles à l'encontre de toute fonction de hachage; il ne serait pas réussir aussi une fonction de hachage si ce n'était pas le cas; la question est de savoir comment facilement un attaquant peut réussir dans la "simulation" une "correcte" en clair, c'est que les hachages pour la même valeur de hachage).
Par ailleurs, la somme MD5 d'un texte en clair n'est pas nécessairement sans danger, car il contient moins "données" ou "perte", mais parce que, à partir de l'arbitraire d'un texte en clair, il permet de calculer une somme de la valeur dans une plage fixe (pour plaintexts < 128 bits, la somme MD5, en fait, contient plus d'informations que le texte en clair...), et, par conséquent, un nombre théoriquement infini) de texte en clair peut tous s'alignent sur le même hash MD5.