哈希算法
加密哈希函数是一种单向的哈希函数,可以将任意长度的数据映射为固定长度的比特序列。这种“单向性”意味着,如果我们只知道哈希函数的输出值,还原出输入数据在计算上是不可能的。
要发现可能的输入值,唯一的方式就是暴力搜寻,检查每一个可能的输入是否能得到同样的输出值;便可以找到一些输入能产生同样的哈希值,也不一定就是我们想求的那个初始输入:因为哈希函数是“多对一”的函数。
特征
密码哈希函数的五个主要特性:
- 确定性:同样的输入信息总是会产生相同的输出哈希。
- 可验证性:计算任意输入信息量的哈希运算非常高效(线性的计算性能)。
- 无关联性:对于输入消息的微小改变(哪怕是只改变一个比特)都会对输出结果的哈希造成巨大的变化,而且这样的变化与之前的消息之间没有任何关联性。
- 不可逆性:从哈希反向计算得出输入的原始信息是不现实的,只能通过暴力穷举式的尝试。
- 碰撞保护性:几乎不可能找到能够得到同一个哈希输出的两个不同信息。这里的碰撞保护性对于防止伪造以太坊中的数字签名尤其重要。