我想学习如何做手工哈希(如纸和铅笔)。这是可行的吗?任何有关如何了解这一点的指针将不胜感激。做手工/数学哈希
Q
做手工/数学哈希
1
A
回答
1
这取决于你想要做的散列。您可以非常容易地手动完成一个非常简单的散列 - 例如,一个简单的方法是获取字符串的ASCII值,并将它们加在一起,通常做一些像字符之间左旋的操作。因此,要对字符串“Hash”进行散列,我们将以字母的ASCII值(十六进制)开头:48 61 73 68
。我们将添加这些在一起,我们的旋转结果却让字母间4位(16位字):
0048 + 0061 = 00A9
00A9 < < < 4 = 0A90
0A90 + 0073 = 0B03
B03 < < < 4 = B030
B030 + 68 = B098
结果:B098
用手做一个密码散列将是一个相当不同的故事。这当然还是有可能的,但将会是温和的,非常单调乏味的。密码哈希通常比较复杂一些,并且(更重要的是)几乎总是有很多“轮回”,这意味着基本上重复一系列步骤来从输入到输出。从经验谈起,只需在调试器中逐步执行SHA-1以确保正确实施它是一种痛苦 - 手工完成这一切将非常糟糕(但正如我所说的,无论如何可能)。
1
您可以通过查看
1
我会建议您尝试使用CRC开始,因为在我看来是最容易做手工:http://en.wikipedia.org/wiki/CRC32#Computation_of_CRC。
你可以做一个比标准更短的长度(通常是32位)来使事情变得更简单。
相关问题
- 1. 学生标记哈希
- 2. redis-py手表哈希键
- 3. 构建数据结构 - 哈希数组的哈希哈希
- 4. RUBY - 做哈希阵列哈希内的正确方法
- 5. Perl哈希哈希
- 6. Java中的哈希数组哈希
- 7. Python哈希函数和哈希对象
- 8. 麻省理工学院哈希讲座解释
- 9. 哈希访问哈希
- 10. 哈希[string.split(...)]对哈希[* string.split(...)]
- 11. 哈希哈希在Perl中
- 12. Android哈希不工作
- 13. 防止哈希工作锚
- 14. sha1哈希不工作? C#
- 15. 做出独特的哈希出两串
- 16. 哈希映射中的哈希部分如何工作?
- 17. 不同的哈希码,但哈希映射不工作
- 18. 哈希Python函数
- 19. PHP哈希函数
- 20. 哈希和数字
- 21. 在哈希数组
- 22. Java哈希函数
- 23. 新手:对象还是哈希?
- 24. 手动纠正混帐提交哈希
- 25. 开放手风琴与哈希标记
- 26. jRuby哈希迭代新手在这里
- 27. 哈希中的数组中的Ruby访问哈希(并添加新的哈希)
- 28. 如何将哈希数组推送到哈希数组?
- 29. 如何在哈希中存储哈希哈希?
- 30. 参考哈希键的链哈希一个Perl哈希
+1以补偿无法解释的downvote。我查看了你链接的页面,它提供了一些很好的哈希函数例子,可以很容易地用手来计算(在Hash函数算法部分)。 – David 2010-08-13 05:09:22