手动/数学地做哈希

时间:2010-08-13 04:56:16

标签: hash

我想学习如何手工制作哈希(比如纸和笔)。这可行吗?关于在哪里了解这一点的任何指示将不胜感激。

3 个答案:

答案 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)

你可以从

开始

Hash function

答案 2 :(得分:1)

我建议尝试使用CRC,因为在我看来,这是最容易手工完成的:http://en.wikipedia.org/wiki/CRC32#Computation_of_CRC

你可以做一个比标准更小的长度(通常是32位)来使事情变得更容易。