大家好,欢迎来到IT知识分享网。
哈希函数(Hash function)也叫杂凑函数。
哈希函数非常有趣,它可以对任意一段字符串数据,输出其“数据指纹”。
这个函数简单讲就是:hash(x)=y。
这里x叫“哈希输入”,它可以是一段任意长度的字符串。
y则叫“哈希输出”,或者叫“哈希值”,它是一段具有固定长度的字符串。
比如哈希函数中的一种:sha256(Secure Hash Algorithm256:安全哈希算法),它输出的哈希值是一个具有256位的二进制字符串,如果转写为16进制的话,那就有64位。
比如sha256(狗)=cecd675a4c3cb00d1fee2e46eb53f902c9c5d09fa0636f7ea83e10e3214ba656。
其实哈希函数除了sha256之外呢,另外还有很多,但是目前最为著名的就是sha256,因为比特币系统用到的哈希函数就是sha256。
哈希函数具有以下典型特征:
1、确定性:某一个输入必然对应唯一一个输出的哈希值。换句话说,输出不同,则输入必然不同。
2、一般不可逆性:哈希函数很容易由输入得到输出,但是却极难由输出逆推出输入。大家注意,加密货币挖矿的过程,可以简单理解为是一个由输出“勉强”找到输入的过程,所以挖矿-是极其困难的,至少人脑是做不到的,而现在普通电脑也基本做不到了,只有拥有巨大算力的矿池、矿场可以做到。另外,挖矿用到的方法实际上是穷举法,并不是逆推法(从本质上讲,只有生成的输出哈希值以一定数量的零开头,矿工才能验证区块。零的数量决定挖矿难度,并随着专用于网络的哈希率变化而变化)。
3、一般无哈希冲突:理论上,不同的输入,也可能得到相同的输出,这个叫“哈希冲突”,或者叫“哈希碰撞”。但是这个概率呢,相当于在现实世界中找到两片相同的树叶,这在现实中是不可能的。所以在实际操作中,是没有哈希冲突的,两个不同的输入,一定会得到不同的输出。
最后来谈谈,哈希函数有什么意义呢?
主要是可以对原始数据加密:原始数据设为x,而你呈现给别人的则是哈希值-hash(x)。别人无法通过hash(x)来反推x,但是在需要与合适的时候,却很容易输入x来验证hash(x)。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/92785.html