什么是Hash函数
hash函数是一种算法,将任意长度的二进制数据映射为固定长度的二进制数据。
hash函数特点
确定性
对同一个输入数据,无论用hash函数重复计算多少次,每次都会得到相同的结果。

单向性
很轻松的对已知数据进行hash计算,得到hash值,但是通过哈希值返推已知的数据却非常困难。

这就意味着,即使有黑客攻破了服务器,得到了你账户密码的哈希摘要,他也没有办法通过这个摘要获得你的真实帐号和密码。就是因为哈希函数的不可逆性。
隐秘性
在已知哈希值的情况下,没有可行的办法算出hash函数的输入值。
抗篡改
对一个数据块,哪怕只改动其中一个bit位,其哈希值的改动非常大。
区块链中主要使用该特性保证数据的不可篡改性。
抗碰撞
对任何两个不同的数据块,其哈希值相同的可能性极小,对一个给定的数据块,找到与它哈希值相同的数据块极为困难。
hash函数的实现
1.MD系列
2.SHA系列,推荐SHA256,SHA3
MD系列中最常用的是MD5,但是由于MD5的弱点被不断发现,以及计算机能力的不断提升,现在用两个不同的输入值构造一个相同的MD5哈希值已经不是特别困难的事情,因此,不在推荐在安全性较高的场景中使用MD5。取而代之的是SHA系列。
SHA系列包括SHA0、SHA1、SHA2、SHA3,其中SHA0\SHA1也被证明不够安全,推荐使用SHA256和SHA3相关算法。
go语言中实现hash函数代码如下:

文章转载自代码论道,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




