风险提示:理性看待区块链,提高风险意识!

哈希算法(Hash算法)是什么及用途?

2个回答

羽飞7星评价

2020-04-22 14:08:25

哈希算法(Hash算法)是什么及用途?

提起哈希算法,很多矿工应该和小羊同学一样,第一反应就是比特币挖矿。没错,比特币挖矿就是不断修改区块头部的随机数,再去计算区块头部的哈希值,直到这个哈希值满足了一个特定的标准,然后通告全网的过程。那么哈希算法究竟是什么呢?

01.什么是哈希算法?

哈希算法又称散列算法,是指某种从任意长度的数据中创建数字指纹”的算法。它可以将任意长度的数据映射为固定长度的数据,这个映射后的数据我们称之为哈希值。

哈希算法具有一些特点:

1. 强抗碰撞性:对于任意两个不同的数据块,其哈希值相同的可能性极小;对于一个给定的数据块,找到和它哈希值相同的数据块极为困难。

2. 强抗篡改性:对于一个数据块,哪怕只改动其一个比特位,其哈希值的变动也会非常大。

常见的哈希算法有MD2.MD4.MD5.SHA1.SHA256和SHA512。

加密算法的效能通常可以按照算法本身的复杂程度、密钥长度(密钥越长越安全)、加解密速度等来衡量。上述的算法中,除MD2速度较慢已逐渐被淘汰外,其他算法仍在目前的加密系统产品中使用。

02.哈希算法的用途

哈希算法在生活中的应用要比我们想象中要广泛。

它可以检验信息是否是相同的,这样的优势是可以节省重复数据传送的时间。就像我们在一些网盘中上传的文件,如果文件内容相同的话,哪怕属于不同的用户,也可以通过对比哈希值避免向服务器重复上传相同的文件,可以很大程度上节约存储资源,提高存储效率。

除此之外,哈希算法也可以对网站注册用户的密码进行加密保护。

在密码学中,哈希算法的主要作用是用于消息摘要和签名,主要用于消息的完整性校验。哈希算法不可逆,用于密文保存密码的签名,网站后台只保存签名值。 这样即使网站保存的信息被盗取,也无法获取用户的密码,具有更高的安全性。

看到这里,矿友们是不是对哈希算法有了基本的了解呢。在比特币的区块中,除了使用哈希算法确保算力,还通过将包含所有交易的默克尔树的哈希值记录在区块头,确保了这些交易不被窜改呢。


乔子1星评价

2020-04-22 14:09:08

什么是哈希算法?哈希是一种加密算法,也称为散列函数或杂凑函数。哈希函数是一个公开函数,可以将任意长度的消息M映射成为一个长度较短且长度固定的值H(M),称H(M)为哈希值、散列值(Hash Value)、杂凑值或者消息摘要。它是一种单向密码体制,即一个从明文到密文的不可逆映射,只有加密过程,没有解密过程。

Hash的特点

易压缩:对于任意大小的输入x,Hash值的长度很小,在实际应用中,函数H产生的Hash值其长度是固定的。

易计算:对于任意给定的消息,计算其Hash值比较容易。

单向性:对于给定的Hash值,要找到使得在计算上是不可行的,即求Hash的逆很困难。在给定某个哈希函数H和哈希值H(M)的情况下,得出M在计算上是不可行的。即从哈希输出无法倒推输入的原始数值。这是哈希函数安全性的基础。

抗碰撞性:理想的Hash函数是无碰撞的,但在实际算法的设计中很难做到这一点。

有两种抗碰撞性:一种是弱抗碰撞性,即对于给定的消息,要发现另一个消息,满足在计算上是不可行的;另一种是强抗碰撞性,即对于任意一对不同的消息,使得在计算上也是不可行的。

高灵敏性:这是从比特位角度出发的,指的是1比特位的输入变化会造成1/2的比特位发生变化。消息M的任何改变都会导致哈希值H(M)发生改变。即如果输入有微小不同,哈希运算后的输出一定不同。

哈希算法有什么用途?

哈希算法可以检验信息是否是相同的,这样的优势可以节省重复文件传送的时间。

举一个生活中很平常的例子,我们在生活工作中会使用一些软件给别人传送文件数据,如果有人传送了一份文件给一个人,然后又有一个人传送了相同的文件给了另外一个人,那么这个社交软件在第二次传送文件的时候会对比两次传送的哈希值,发现是相同的,该软件就不会再次上传文件给服务器了。

除此之外,哈希算法还可以检验信息的拥有者是否真实。

比如,我们在一个网站注册一个账号,如果网站把密码保存起来,那这个网站不论有多安全,也会有被盗取的风险。但是如果用保存密码的哈希值代替保存密码,就没有这个风险了,因为哈希值加密过程是不不可逆的。

哈希算法会不会被破解?

从理论上说,哈希值是可以被获得的,但是对应的用户密码很难获得。

假设一个网站被攻破,黑客获得了哈希值,但仅仅只有哈希值还不能登录网站,他还必须算出相应的账号密码。

计算密码的工作量是非常庞大且繁琐的,严格来讲,密码是有可能被破译的,但破译成本太大,被成功破译的几率很小,所以基本是不用担心密码泄露的。

当然,黑客们还可以采用一种物理方法,那就是猜密码。他可以随机一个一个的试密码,如果猜的密码算出的哈希值正好与真正的密码哈希值相同,那么就说明这个密码猜对了。

密码的长度越长,密码越复杂,就越难以猜正确。如果有一种方法能够提高猜中密码的可能,那么可以算是哈希算法被破解了。

比如说,例如原本猜中的概率是1/10000000000000,现在增加到了1/1000。如果每猜一个密码需要1秒,按照之前的概率猜,直到地球毁灭都可能没猜中,但后者只需要1小时就足够了。在这样的情况下,哈希算法就算是被破解啦。