30 votes

xkcd: Externalités

Ainsi, le 1er avril 2013 xkcd Externalités web comic dispose d'un Écheveau de 1024 1024 hachage casser du concours. Je suppose que ce doit être rien de plus que la force brutale de l'effort où des chaînes aléatoires sont hachés dans un effort pour correspondre à Randall posté de hachage? Est-ce correct?

Aussi, ma connaissance de l'Écheveau de hachage théorie est pratiquement inexistant, mais tout en étant à mi-chemin décent programmeur, j'ai été en mesure de télécharger et d'exécuter les deux SkeinFish (C#) et Maarten Bodewes Écheveau de mise en œuvre (Java) localement en 1024 1024 mode avec quelques chaînes en entrée. Les hachages qu'ils ont donné, cependant, étaient différents de la valeur de hachage qui xkcd retourné pour la même entrée. Cela peut être extrêmement naïf question, mais n'différents Écheveau des implémentations de donner différents hachages? Et ce que l'Écheveau de la mise en œuvre est xkcd à l'aide?

Merci de pardonner mon ignorance!

11voto

fbrereto Points 21711

Il y a plusieurs différentes itérations de l'écheveau de l'algorithme. XKCD est à l'aide de la version 1.3, qui est aussi la plus récente. Les Sources peuvent être trouvés ici (cherchez "V1.3")

Curieusement, cette force brute de la méthode est la même que celle employée par Bitcoin à "mine" de bitcoins. Les grandes différences sont l'algorithme de hachage (SHA-256 dans ce cas) et la cible de hachage (qui est déterminée à être tout de hachage de départ avec un certain nombre de zéros). Il faut beaucoup de travail pour découvrir la table de hachage, mais une fois qu'il a été trouvé, il est trivial de vérifier la source de bits et que le résultat de hachage répond aux critères.

7voto

Justin L. Points 1427

Voici le code source utilisé par l'équipe de Stanford. Nous avons couru cela sur une centaine de 8-core EC2 serveurs pendant un certain temps, mais pas toute la concurrence.

https://github.com/jhiesey/skeincrack

1voto

Joey Hewitt Points 83

Si vous étiez le hachage des caractères non alphanumériques (espaces, ponctuation, etc.), vous avez peut-être obtenir des résultats différents en raison de formulaire HTML de codage. Le "enctype" attribut sur le formulaire de XKCD a été l'hébergement était "application/octet-stream", qui, selon https://developer.mozilla.org/en-US/docs/HTML/Element/form n'est pas un navigateur pris en charge. Je suppose que le navigateur revient sur l'URL-type de codage quand il en voit un il ne reconnaît pas.

J'ai observé la chaîne "=" être soumis URL-encodé dans le Chrome et le retour d'un hachage différent de ce que je suis en local avec la dernière pyskein. Mais quand j'ai présenté avec cette commande curl ligne (ne fonctionne plus), j'ai eu l'attend de hachage:

curl -X POST --data-binary "hashable==" "http://almamater.xkcd.com/?edu=school.edu"

Stanford code dans une autre réponse est la même chose, et, apparemment, ils ont eu un certain succès. Je n'ai jamais obtenu des données aléatoires localement de hachage pour un meilleur score que même ma propre école, donc je n'ai jamais eu la chance de le tester à fond la façon de transmettre des données arbitraires dans correctement. Je ne sais pas quel est le comportement exact a été (par exemple, peut-être que si vous avez omis hashable= le serveur détecte que juste et de hachage de l'ensemble du corps POST), mais il peut avoir intentionnellement été un peu délicat dans le cadre d'un poisson d'avril.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X