在区块链领域,哈希算法是我们第一次听说区块链的概念之一。
那么哈希算法到底是什么?除了区块链之外,哈希算法在生活的其他领域还有哪些应用呢?
维基百科的哈希算法描述:
哈希函数(或哈希算法)是一种从任何类型的数据创建微小数字“指纹”的方法。哈希函数将消息或数据压缩为摘要,以减少数据量并固定数据的格式。此功能会打乱数据以重新创建称为哈希值(哈希码、哈希和或哈希)的指纹。哈希值通常表示为随机字母和数字的短字符串。
《区块链行业词典》说明:
哈希值通常表示为一串随机字母和数字,是通过哈希算法从一组任意长度的输入信息中获得的“数据指纹”。因为计算机在其底层机器代码中使用二进制模式。
因此,将哈希算法得到的任意长度的二进制值映射为较短的固定长度的二进制值,即哈希值。另外,哈希值是一种非常紧凑的数字表示形式,唯一地表示数据,如果通过对明文进行哈希处理来获得哈希值,即使只更改明文中的一个字符,后续的哈希值也会保持不变。可能不会。
这两个严格的解释,以及一些不太严格的类比和示例,应该可以让您对哈希有更深入的了解。
哈希算法是一种将几乎所有数字文件转换为看似乱码的数字和字母字符串的函数。
初中时,学生学习函数y=f(x),输入任意值就相当于哈希函数。
作为一种密码函数,哈希函数有两个最重要的属性。
*不可逆转。输入信息并得到看似乱码的输出字符串(哈希值)非常容易,但从输出字符串推断出输入结果却非常困难。
从数学的角度来看,函数是可逆的。如果您知道输出结果与函数之间的关系,则可以可靠地推断出输入值。目前计算机中使用的方法是暴力破解。它使用枚举并一次尝试一个(哈希冲突),直到获得正确的结果。
* 产出值的唯一性和不可预测性。只要输入信息稍有不同,根据哈希算法得到的输出值也会有明显的不同。
不可逆转性可以比作人与指纹之间的关系,或者猪与香肠之间的关系。
* 人物和指纹
找到一个人并知道他的指纹是很容易的,但只知道他的指纹很难知道这个人是谁。然而,比较两个指纹是否匹配是非常容易的,所以警察仅仅收集指纹是没有用的,而且需要大量的指纹才能通过简单的比较来知道凶手是谁。一个数据库。这里,个体就是输入值,个体的基因就是算法,得到的指纹就是哈希值。
*猪和香肠
每头猪都可以制作大量的香肠,因此很难从香肠中分辨出是哪头猪。
您可以在这个网站上体验输出值的独特性。
http://www.fileformat.info/tool/hash.htm
输入“你在纸上得到的最终会变得浅薄”,并输出哈希值。 MD5 和SHA-256 等列指的是哈希算法的不同输出标准。文件哈希还允许您输入一个文件并检查输出的哈希值是否与官方哈希值匹配。这样可以防止某些安装包安装后被恶意修改并窃取用户数据。
除了了解区块链之外,哈希算法也与我们的日常生活息息相关。最典型的例子就是银行卡的密码是“123456”。银行后台数据库存储的6位密码为“123456”。由数字和字母组成的字符串(8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12023c923adc6c92) SHA-256。每次输入密码时,系统都会通过哈希算法生成一个字符串,您所要做的就是比较这两个字符串。对比结果显示输入的密码始终正确。不匹配表明密码不正确。
为什么密码要区分大小写和标点符号?
明文密码必须区分中文和英文,因为大小写字母和标点符号的哈希值完全不同。如果没有这种区别,哈希值将不正确,您将无法验证密码是否正确。
比特币哈希值(SHA-256)
6b88c087247aa2f07ee1c5956b8e1a9f4c7f892a70e324f1bb3d161e05ca107b
比特币哈希(SHA-256)
b4056df6691f8dc72e56302ddad345d65fead3ead9299609a826e2344eb63aa4
区别仅在于第一个字符,但哈希值也有很大不同。没有任何模式可以遵循。
哈希函数乍一看很令人困惑,但是一旦你知道它是如何工作的以及在什么情况下使用它,你就会发现它非常可靠和有趣,即使不知道里面复杂的数学原理你也能看到它的东西。
作者:赵军1005 链接:https://www.jianshu.com/p/28cc0f676488 来源:简书版权归作者所有。商业转载请联系作者获得许可。非商业转载请注明出处。
本文和图片来自网络,不代表火豚游戏立场,如若侵权请联系我们删除:https://www.huotun.com/game/583550.html