分享

哈希算法是什么?

 WindHome 2019-09-25

 上篇文章介绍了《零知识证明是什么?》,聊到区块链的时候,难免会听到“哈希”、“哈希算法”,哈希值?是不是听得一头雾水?别急,这一讲我们来浅显易懂的给你讲一讲,不求让你变成 IT 达人。

哈希算法是什么?

哈希指的不是某一种算法,是某一类算法,只要符合这类算法的特点就属于哈希算法。严谨一下把这个特点告诉大家:将任意长度的二进制值转换为固定长度的二进制值。

是不是觉得有点难懂?简单来说,就是将任意长度的输入转换为固定长度的输出。这样一来,哈希算法的概念也来了。

哈希算法又叫散列算法,是一种只能加密,不能解密的密码学算法,可以将任意长度的信息转换成一段固定长度的字符串。

这段字符串有三个特点:

1、 信息相同,字符串也相同。

2、信息相似不会影响字符串相同。

3、输入值与输出值之间没有规律,所以不能通过输出值算出输入值。要想找到指定的输出值,只能采用枚举法:不断更换输入值,寻找满足条件的输出值。

举个例子,无论输入是什么数字格式、文件有多大,输出都是固定长度的比特串。以比特币使用的Sh256算法为例,无论输入是什么数据文件,输出就是256bit。

每个bit就是一位0或者1,256bit就是256个0或者1二进制数字串,用16进制数字表示的话,就是多少位呢?

16等于2的4次方,所以每一位16进制数字可以代表4位bit。那么,256位bit用16进制数字表示,当然是256除以4等于64位。

于是你通常看到的哈希值,就是这样的了:

00740f40257a13bf03b40f54a9fe398c79a664bb21cfa2870ab07888b21aaba8

哈希值:通过哈希运算,从而映射成的二进制的值称为哈希值。现在哈希值也知道了吧?

哈希算法有什么用途?

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

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

还有咱们经常用的“百度网盘”,秒传时就是这样哒。

从更专业的角度来说用途有三大类:这里不要求掌握的

1、文件校验

我们比较熟悉的校验算法有奇偶校验和CRC校验,这2种校验并没有抗数据篡改的能力,它们一定程度上能检测并纠正数据传输中的信道误码,但却不能防止对数据的恶意破坏。

MD5 Hash算法的"数字指纹"特性,使它成为目前应用最广泛的一种文件完整性校验和(Checksum)算法,不少Unix系统有提供计算md5 checksum的命令。

2、数字签名

Hash 算法也是现代密码体系中的一个重要组成部分。由于非对称算法的运算速度较慢,所以在数字签名协议中,单向散列函数扮演了一个重要的角色。 对 Hash 值,又称"数字摘要"进行数字签名,在统计上可以认为与对文件本身进行数字签名是等效的。而且这样的协议还有其他的优点。

3、鉴权协议

如下的鉴权协议又被称作"挑战--认证模式:在传输信道是可被侦听,但不可被篡改的情况下,这是一种简单而安全的方法。

哈希算法会不会被破解?

有一把锁,就有一把钥匙,在《黑客帝国2》中还有专门的“开锁匠”,那哈希算法会不会被破解?

会,只是难度系数真的很大很大。

(黑客帝国2中的开锁匠)

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

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

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

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

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

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

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

课外小拓展

三大成熟哈希算法简介(不要求掌握)

1、MD系列哈希算法

MD就是MessageDigest的简称。家族成员包括MD2,MD4和MD5都产生128位哈希值。目前MD系列算法都发生过碰撞。

2、SHA哈希算法

Secure Hash Algorithm,直译为安全散列算法。现共有SHA-1,SHA-224,SHA-256,SHA-384,SHA-512。

3、SM3杂凑算法

MD和SHA是国家通用的标准,SM3是我国算法标准。输入长度的上限是2的6次方,输出长度是256比特。

好啦,看到这里你是不是对哈希算法有了初步的了解?当然还有一些比较专业的,我们不是专业人士,最后,来个问题热热身,回到区块链上,如何保证挖矿的公平性?

哈希算法保证了比特币挖矿不能逆向推导出结果。所以,矿工持续不断地进行运算,本质上是在暴力破解正确的输入值,谁最先找到谁就能获得比特币奖励。

温馨提示:大家也不要过于担心你的账户以及资产被黑的风险,因为哈希算法仅仅只是比特币的原理算法,还有其他算法一同作用于比特币的运行,因此就算破解了哈希算法也并不能盗取你的账户信息。

好了,关于哈希算法还有什么想知道的吗?其实只要知道哈希算法是加密算法,它的特点是可以将任意长度的信息转换成一段固定长度的字符串。哈希值是通过哈希运算从而映射成的二进制的值称为哈希值。就可以了。

欢迎留言探讨,还会不断补充......

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多