哈希的英文是Hash,中文可翻译成散列或者哈希,它其实就是一个算法,最简单的算法就是加减乘除,比方,我设计个数字算法,输入+5=输出,比如我输入1,输出为6;输入2,输出为7。
哈希算法不过是一个更为复杂的运算,它的输入可以是字符串,可以是数据,可以是任何文件,经过哈希运算后,变成一个固定长度的输出,该输出就是哈希值。但是哈希算法有一个很大的特点,就是你不能从结果推算出输入。
如上图所示,输入“我爱你”三个字,经过哈希运算后,会得到一个随机数列,而且不管你的输入文件多大,最后得到的结果都是这么一个固定长度的数列,即使你输入的是一部电影,输出也是这么大。而且数列不能推导出输入。
哈希有什么好处呢?比方说我们从服务器下载一个软件,如果这个软件被黑客更改了,那么我们下载的就不是原来的软件,如果是银行客户端可能就会有账户被盗的风险,但是有了哈希运算后,我们可以把下载的软件经过哈希运算后得到哈希值,然后把哈希值跟软件发行方公布的哈希值对比,就知道软件是否有被篡改了。同样比如我们登陆网站的密码也是一个很好的哈希运用,网站服务器如果读取的是我们的密码,那不是很危险吗,有了哈希,服务器只用匹配哈希就可以了,而不用读取我们的隐私。

python语言hash示例:
import hashlib
hashObj = hashlib.sha256() #创建sha256的HASH对象
sign = "hello world"
hashObj.update(sign.encode("utf-8")) #把字符串 转换为 bytes ,用update 进行HSAH
print(hashObj.hexdigest()) #打印hash结果
# b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9
无论sign 是什么,哈希值的长度都是一样的,最后得到的结果都是这么一个固定长度的数列,哈希对象不同的创建方法会有不同的固定长度。
import hashlib
hashObj = hashlib.md5() #创建MD5的HASH对象
sign = "hello world"
hashObj.update(sign.encode("utf-8")) #把字符串 转换为 bytes ,用update 进行HSAH
print(hashObj.hexdigest()) #打印hash结果
# 5eb63bbbe01eeed093cb22bb8f5acdc3
浙公网安备 33010602011771号