美文网首页
科普知识——Hash(哈希)

科普知识——Hash(哈希)

作者: 博学于文约之以礼 | 来源:发表于2018-05-26 20:09 被阅读0次

在区块链学习中,经常会遇到Hash(哈希,也翻译为散列)的概念。

区块链的定义就使用到Hash,区块链就是所有的区块组成的链式结构,每个区块中都记录着其父区块的Hash值(准确的说:应该是记录着父区块的区块头的Hash值),这样每个区块中都可以通过父区块的Hash值查询历史交易,也可追溯到创世区块,创世区块就是区块链上的第一个区块。

本文主要阐述Hash的概念、特点及应用场景举例。

Hash的概念

  1. Hash定义

在《Mastering Bitcoin》中关于Hash的定义为

Hash:A digital fingerprint of some binary input.

哈希是二进制数据的一种数字指纹。例如:某一个区块头的哈希值,就是能唯一标识该区块头的一个数字。

通俗讲,哈希就是将一段数据(任意长度)或者一个文件经过一道计算,转换为一个定长的数据,该定长数据即为原数据或者文件的数字指纹,可以唯一标识原数据或者文件。

  1. 体验Hash

如下网站为“在线Hash值计算器”,通过该网站即可计算一段数据或者一个文件的Hash值。

http://www.fileformat.info/tool/hash.htm

登录网站界面如下,可以计算文本字符串、十六进制数据、文件的哈希值。

在线哈希值计算器

以计算文本字符串“abc”的哈希值举例,在文本字符串输入abc,将得到其不同哈希加密算法计算的哈希值。

字符“abc”哈希值结果

实际中使用较多的是MD5(Message-Digest Algorithm 5)哈希加密算法和SHA256(Secure Hash Algorithm 256)哈希加密算法。

  • 字符“abc”基于MD5算法的Hash值:900150983cd24fb0d6963f7d28e17f72
  • 字符“abc”基于SHA256算法的Hash值:ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad

Hash算法的特点

  1. 不可逆性:几乎无法通过Hash的结果推导出原文。

    如上例,无法通过文本字符串“abc”的Hash值,反向推导出“abc”。类比人的指纹,就是无法通过人的指纹推导出这个人是谁。

  2. 无碰撞性:几乎没有可能找到一个y,使得y的哈希值等于x的哈希值。

    如上例,无法找到另外的输入y,使得其哈希值与字符串“abc”的哈希值相同。类比人的指纹,就是几乎没有两个人的指纹是一样的。

哈希算法应用场景举例

  1. 官方发布软件包文件的完整性校验

用户通常在官网下载官方发布的软件包文件,软件包下载过程中存在被黑客篡改的可能性,特别是网银、股票、区块链等的软件包,直接与钱相关,如果软件包被黑客篡改,可能导致软件使用过程中用户的资产损失。

通常官方在发布软件包时,会同时发布软件包基于一定加密哈希算法的哈希值。用户下载软件包到本地后,可通过“Hash值计算工具”计算软件包的Hash值,如果计算出的值与官方发布的哈希值一致,则表示下载的软件包文件完整,可放心安装使用。

  1. 服务器中存储用户密码

所有要求用户注册用户名和密码的平台,包括银行账户、数字货币交易平台、电商平台等,用户设置的账户密码在平台服务器都是通过哈希算法加密存储的(通常采用MD5算法),而不是明文存储的。

用户登录账户时,将用户输入的密码进行对应的哈希计算,将计算的哈希值与存储在服务器的哈希值进行比较,如果哈希值一致,则验证密码输入正确,登录成功;如果哈希值不一致,则验证密码输入错误,登录失败。

总结

本文主要阐述了Hash(哈希)的概念、特点及应用场景。Hash就是一段数据(或者一个文件)的数字指纹;Hash算法具有不可逆性、无碰撞性;并举例说明哈希算法的应用场景。

相关文章

  • 科普知识——Hash(哈希)

    在区块链学习中,经常会遇到Hash(哈希,也翻译为散列)的概念。 区块链的定义就使用到Hash,区块链就是所有的区...

  • 计算文件哈希值

    什么是哈希值? 哈希值(hash values)是使用哈希函数(hash function)计算得到的值。哈希函数...

  • 哈希算法

    哈希算法 什么是hash函数?常见的hash算法hashlib的用法hash算法的用途 什么是hash函数? 哈希...

  • Perl 得到重复行的次数

    命令描述chomp($_)过滤断行符号$hash{...}哈希表say打印keys %hash排序哈希表forea...

  • 哈希表

    映射(Map) 和 集合(Set) 哈希表(HashTable)、哈希函数(Hash Function)、哈希碰撞...

  • 哈希-Hash

    将数据通过密码学的运算转变成一段不可知的定长数据,不管加密的数据有多大或多小生成的hash值的长度是固定的...

  • Hash哈希

    基本概念 Hash,一般翻译做“散列”,也有直接音译为“哈希”的。那么哈希函数的是什么样的?大概就是 value ...

  • 哈希-Hash

    HashMap Hash通常有几种方法: 除留余数法: H(key) = key mod N 直接定址法(取关键字...

  • iOS开发之哈希表、时间复杂度、链表

    哈希表(Hash table) 哈希表(Hash table,也叫散列表),是根据关键码值(Key value)而...

  • 数据结构

    哈希hash(键:值) Hash表也称散列表,也有直接译作哈希表,Hash表是一种特殊的数据结构,它同数组、链表以...

网友评论

      本文标题:科普知识——Hash(哈希)

      本文链接:https://www.haomeiwen.com/subject/fwxvjftx.html