入门科普29:什么是哈希算法?

Posted 大杂说

tags:

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

入门科普


29

什么是哈希算法



关于“算法”一词,目前国内用户使用的比较模糊,有时指共识机制,比如POW算法,POS算法;有时指具体的Hash算法,比如SHA256,SCRYPT。


应该说这是由于早期从外文资料翻译过来概念模糊导致的错误,后来人云亦云。作为区块链算法,哈希算法一直让普通大众感到晦涩难懂,那么究竟它是什么,有什么用途呢?




01




什么是哈希算法

哈希算法并不是指的某一种算法,而是某一类算法,就像水果并不是只有苹果,还有香蕉、哈密瓜、葡萄......等等,很多很多的。

只要符合这类型算法的特点就属于哈希算法,什么算法的特点呢,就是可以将任意长度的信息转换成一段固定长度的字符串。



入门科普29:什么是哈希算法?


哈希的意思就是引入随机数量的输入数据,将其加密,然后得出一个固定输出数据,就叫做哈希哈希算法是一种只能加密,不能解密的密码学算法,是将任意长度的二进制值映射为较短的固定长度的二进制值。输入可以是任何数据,只要能代表单个字节,一个MP3文件,整本小说,你的银行账单,甚至是整个互联网。关键在于输入可以无限大。哈希算法可以根据你的需求来进行选择,现在公开的也有很多种算法。





02




哈希算法的分类


哈希算法其实有很多种,例如 md5 ,SHA256 等等,但是它们总体上可以分为两大类,一类是普通哈希,另外一类是加密哈希,cryptographic hash function 。


加密哈希跟普通哈希的区别就是安全性,一般原则是只要一种哈希算法出现过碰撞,就会不被推荐成为加密哈希了,只有安全度高的哈希算法才能用作加密哈希。

同时加密哈希其实也能当普通哈希来用,Git 版本控制工具就是用 SHA-1 这个加密哈希算法来做完整性校验的。
一般来讲越安全的哈希算法,处理速度也就越慢,所以并不是所有的场合都适合用加密哈希来替代普通哈希。


哈希算法的输出长度是固定的,而加密算法的输出长度是跟数据本身长度直接相关的,哈希是不可以逆向运算出数据的,而加密算法的输出是要能够逆向运算出数据的。所以加密哈希算法只是被用在加密过程中,但是它本身不是加密算法。总之,哈希算法有很多种,长度越长的算法基本认为越安全。安全度低的哈希算法被认为是普通哈希算法,主要用来做完整性校验。安全度高的被称为加密哈希算法,会被用在加密算法中。所谓的高低都是相对概念,例如 MD5 曾经属于加密哈希,但是目前只能用来做安全校验了。而从2017年开始,SHA-1 算法生成的加密证书也会被各大浏览器拒绝了。目前最流行的加密算法是 SHA-2 ,但是跟 SHA-1 不同,SHA-2 不是一种算法,而是一系列算法的统称,其中就包括咱们之前提过的 SHA-256 。





03




哈希算法的作用


哈希算法的主要作用是——利用哈希算法的防篡改性,用来验证信息的完整,因为如果信息在传递过程中被篡改,那么运行哈希计算得到的哈希值与原来的哈希值不一样。在区块链中,哈希函数的抗碰撞性用来做区块和交易的完整性验证,一有篡改就能被识别出来。

 

简单来说,哈希使得区块链上的人对现在的整体状态达成共识,电子签名却保证了所有交易都只由正确的人发出。我们依赖于这两个特性,来保证区块链不会存在任何欺诈和贪污现象。




入门科普29:什么是哈希算法?


(添加小白微信,拉你进群入币圈交流群哦)

以上是关于入门科普29:什么是哈希算法?的主要内容,如果未能解决你的问题,请参考以下文章

区块链科普:什么是哈希算法2?

『区块链科普』什么是哈希算法?(下)

►动画哈希算法是什么?丨区块链100问 第59集

Hash(哈希)算法科普

入门|哈希算法是什么?

区块链知识储备-哈希算法和数字签名