Je veux apprendre à faire un hachage à la main (comme avec du papier et un crayon). Est-ce faisable? Tout point de repère sur les endroits à apprendre à ce sujet serait apprécié.Faire un hachage à la main/mathématiquement
Répondre
Cela dépend du hachage que vous voulez faire. Vous pouvez facilement faire un hachage très simple à la main - par exemple, un trivial consiste à prendre les valeurs ASCII de la chaîne, et à les ajouter ensemble, en faisant généralement quelque chose comme une rotation à gauche entre les caractères. Donc, pour hacher la chaîne "Hash", nous commençons avec les valeurs ASCII des lettres (en hexadécimal): 48 61 73 68
. Nous allons ajouter les ensemble, tourner à gauche notre résultat 4 bits (en un mot de 16 bits) entre les lettres:
0048 + 0061 = 00A9
00A9 < < < 4 = 0A90
0A90 + 0073 = 0B03
B03 < < < 4 = B030
B030 + 68 = B098
Résultat: B098
Faire un hachage cryptographique à la main serait histoire plutôt différente. C'est certainement encore possible, mais serait extrêmement fastidieux, pour le moins. Un hachage cryptographique est généralement un peu plus complexe, et (plus important encore) a presque toujours beaucoup de "tours", ce qui signifie que vous répétez fondamentalement un ensemble d'étapes un certain nombre de fois pour obtenir de l'entrée à la sortie. Parlant d'expérience, le fait de passer SHA-1 dans un débogueur pour être sûr que vous l'avez implémenté correctement est une douleur - le faire à la main serait assez horrible (mais comme je l'ai dit, certainement possible de toute façon).
Vous pouvez commencer par regarder
Je suggère d'essayer un CRC, car il me semble être le plus facile à faire à la main: http://en.wikipedia.org/wiki/CRC32#Computation_of_CRC.
Vous pouvez faire une longueur plus petite que la norme (c'est généralement 32 bits) pour faciliter les choses.
- 1. Faire une instruction if dans un hachage dans un modèle
- 2. Modification hachage dans un hachage en Perl
- 3. Rails - ajouter un hachage à redirect_to
- 4. Est-il possible de faire un tri conditionnel en hachage?
- 5. Tableau à hachage imbriqué
- 6. Java MD5 hachage, comment puis-je faire?
- 7. Comment mettre à jour un objet de hachage Ruby à l'intérieur d'une boucle sur ce hachage?
- 8. Obtenir un hachage ordonné
- 9. Essayer de faire référence à un hachage en utilisant une valeur de chaîne en Ruby
- 10. Accès à un hachage imbriqué dans un contrôleur
- 11. Un hachage simple, répétable d'un UInt32 à un UInt16
- 12. Comment faire un hachage avec la sortie de kstat -p en utilisant Perl?
- 13. Quelle est la meilleure façon de copier en profondeur un hachage de hachage en Perl?
- 14. Perl Comment accéder à un hachage qui est l'élément d'un tableau qui est la valeur d'un autre hachage?
- 15. Accéder à un tableau dans un hachage dans Ruby
- 16. DRY façon d'attribuer des valeurs de hachage à un objet
- 17. Comment enregistrer des sockets dans un hachage et faire une boucle sur un autre thread?
- 18. ce qui est la meilleure façon de convertir un hachage rubis à un tableau
- 19. Comment effacer un hachage Perl
- 20. Comment faire une copie superficielle d'une référence de hachage Perl?
- 21. Différence entre un objet et un hachage?
- 22. Comment transmettre un hachage à une fonction en Perl?
- 23. Comment puis-je référencer un hachage Perl dans un tableau dans un hachage?
- 24. mappage à valeur dans le hachage profond
- 25. Étendre la classe de hachage
- 26. Perl: taille du tableau dans un hachage, dans un autre hachage
- 27. Filtrer un tableau de hachage dans un hachage dans ruby / rails
- 28. Comment faire pour calculer le hachage d'informations Torrent dans VB6
- 29. Existe-t-il un moyen simple de valider un hachage d'élément de hachage existant et défini?
- 30. Comment affecter deux tableaux à un hachage en Perl?
+1 pour compenser le downvote inexpliqué. J'ai regardé la page que vous avez liée, et elle ** fournit ** quelques bons exemples de fonctions de hachage qui pourraient facilement être calculées à la main (dans la section * Hash function algorithms *). – David