详解哈希算法

Posted 沈阳四块科技

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了详解哈希算法相关的知识,希望对你有一定的参考价值。

当新人在学区块链技术的时候,都会听到哈希和哈希算法,这似乎是无处不在的安全性保证。

例如比特币或者以太坊这种运行去中心化网络和共识的机器,都会有上万个节点通过P2P连接,并且需要“无需可信”和可验证的效率。

这些系统需要将信息写入紧凑的格式,从而通过参与者进行保证安全和快速验证。

详解哈希算法

到处都会使用加密哈希,从密码存储到文件验证系统。使用确定性算法的基本原理,就是使用一个输入,并且每次都产生一个固定长度的字符串。也就是说,使用同样的输入总是会导致同样的输出。

确定性不仅对哈希很重要,而且可以改变输入的单个字符会产生完全不同的哈希。

哈希算法的问题是碰撞(collisions)的必然性。哈希是固定的字符串,意味着对于每个输入,不同的输入都会产生同样的输出。碰撞(collisions)是不好的。

这意味着如果有攻击者能够根据需求创建这种collisions,那么他就可以让欺诈文件或者数据看起来像正确的,合适的哈希,并且冒充合法。优质哈希功能的目标是让攻击者很难找到,获得输入数据的方法。

计算哈希不应该太简单,因为这会让对于攻击者来说,计算collisions也变得很容易。哈希算法需要对“预攻击”有抵抗性。也就是说,给定哈希,应该很难计算追溯确定性的步骤来重新产生由哈希创建的数值。

Given s= hash(x), finding x should be near impossible.

概括来看,“好的”哈希算法会有以下3种特性:

1、在输入中改变一个字符,应该会创建雪崩效应,从而导致完全不同的哈希。

2、很低的概率会产生collisions。

3、提高效率,但是不会牺牲collision的对抗性。

破散哈希:其中一个初始哈希算法标准是MD5哈希,这是被广泛用来进行文件整合验证,而且存储哈希密码在网页应用数据库。这个功能非常简单,因为输出是固定的,128个字符串对于每个输入,并且使用几轮微不足道的单向运算来计算其确定性输出。它的输出长度短,操作简单,使得MD5彻底易碎,被称为生日攻击。


以上是关于详解哈希算法的主要内容,如果未能解决你的问题,请参考以下文章

一致性哈希算法原理详解

字符串哈希算法(以ELFHash详解)

一致性哈希算法原理图文详解!学不会接着来砍我!

一致性哈希算法原理图文详解!学不会接着来砍我!

一致性hash算法详解

python之哈希算法