Hash一般翻译为散列,还有音译为哈希,本文我们统称为哈希(哈希=散列),通过百度以及谷歌都没有直接找到Hash的定义,而是找到了一些相关的概念,哈希算法,哈希函数,哈希表等概念。
也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。
哈希简单的理解,就是把一串长的数据变成一串短的数据,它有三个特点:
第一、它具有单向性。
我们只能够把长的数据计算成一个短的哈希,我们不可能把哈希再推导出原来的数据.
很多人很好奇区块链是怎么形成,比如区块打包以后,区块就会被计算出一个哈希,哈希会存放到下一个区块当中,下一个区块里面的哈希就把上一个区块给锁定了这就是传统中的哈希锁定,区块链的不可更改就是从这里面来的,因为是前面的区块更改了,后面区块里面存在哈希就不能够对应了,所以区块链它是每一个区块都对上一个区块进行的内容的锁定,这就是哈希锁定。
第二、哈希具有唯一性。
哈希的唯一性就是我们把一个长的数据变成一个哈希数据,每一个长的数据它变成的哈希数据都是唯一与之对应的,但是这句话是有问题的,因为把长数据变成短数据,或者是把长的文件变成一个短的哈希,那在科学上,它是有一定的概率会形成相同的哈希的,只是概率极低极低,哈希有唯一性就是这么来。
第三点、哈希具有离散性。
离散性就是我们两个非常相近的文件,或者是我们两个只相差一位数的一个长数据,我们计算出来的哈希它的数值是天壤之别,是没有任何相似地方的,哈希的离散性主要是为了规避一些有特征的攻击。
What is hash?
Hashing is the process of programmatically encrypting a fixed length output of an arbitrary length input.Hash is not the same as encryption method,because the hash value cannot be decrypted to obtain the original data.In fact,hash is a single encryption function.
With the hash function,data on the Internet can be saved in the form of fixed length strings.One method is SHA-256(secure hash algorithm-256 bits).SHA-256 is the successor of SHA-1,and the output of SHA-1 is 160 bits.
特点
如果两个哈希值是不相同的(根据同一函数),那么这两个散列值的原始输入一定是不相同的。
如果两个哈希值相同,两个输入值很可能(极大概率)是相同的,但也可能不同,这种情况称为“哈希碰撞”
抗篡改能力:对于一个数据块,哪怕只改动其一个比特位,其hash值的改动也会非常大。
它是一种单向函数是“非对称”的,即它是一个从明文到密文的不可逆的映射,只有加密过程,没有解密过程。