我想学习如何手工制作哈希(比如纸和笔)。这可行吗?关于在哪里了解这一点的任何指示将不胜感激。
答案 0 :(得分:2)
这取决于你想要做的哈希。你可以很容易地手工完成一个非常简单的哈希 - 例如,一个简单的哈希值就是取字符串的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)
你可以从
开始答案 2 :(得分:1)
我建议尝试使用CRC,因为在我看来,这是最容易手工完成的:http://en.wikipedia.org/wiki/CRC32#Computation_of_CRC。
你可以做一个比标准更小的长度(通常是32位)来使事情变得更容易。