相关文章推荐
深情的爆米花  ·  信息安全(一)-编码算法【base64编码、 ...·  1 周前    · 
谦虚好学的感冒药  ·  区块链概念1:Hash 算法开发者社区·  1 周前    · 
活泼的卤蛋  ·  东阳市巍山高级中学·  1 年前    · 
任性的柚子  ·  "国漫同人游戏天花板 "王者荣耀同人游戏 ...·  2 年前    · 
豪情万千的小刀  ·  你最关心的,联影医疗正在回答:130亿现金无 ...·  2 年前    · 
爱看书的鼠标垫  ·  如何评价罗马尼亚电影《倒霉性爱,发狂黄片》? ...·  2 年前    · 
失落的饼干  ·  我与四个顾先生视频,我与四个顾先生好看动漫动 ...·  2 年前    · 
Code  ›  区块链概念1:Hash 算法开发者社区
哈希 hash函数 区块链 哈希算法
https://cloud.tencent.com/developer/article/1072800
谦虚好学的感冒药
1 周前
用户1410343

区块链概念1:Hash 算法

腾讯云
开发者社区
文档 建议反馈 控制台
首页
学习
活动
专区
圈层
工具
MCP广场
文章/答案/技术大牛
发布
用户1410343
社区首页 > 专栏 > 区块链概念1:Hash 算法

区块链概念1:Hash 算法

作者头像
用户1410343
发布 于 2018-03-26 14:35:39
发布 于 2018-03-26 14:35:39
3K 0
举报
文章被收录于专栏: about云 about云

问题导读 1.哈希算法在区块链的作用是什么? 2.什么是哈希算法? 3.哈希算法是否可逆? 4.比特币采用的是什么哈希算法? 在学习哈希算法前,我们需要知道哈希在区块链的作用 哈希算法的作用如下: 区块链通过哈希算法对一个交易区块中的交易信息进行加密,并把信息压缩成由一串数字和字母组成的散列字符串。 区块链的哈希值能够唯一而精准地标识一个区块,区块链中任意节点通过简单的哈希计算都接获得这个区块的哈希值,计算出的哈希值没有变化也就意味着区块链中的信息没有被篡改。 hash (哈希或散列)算法是信息技术领域非常基础也非常重要的技术。它能任意长度的二进制值(明文)映射为较短的固定长度的二进制值(hash 值),并且不同的明文很难映射为相同的 hash 值。 例如计算一段话“hello blockchain world, this is yeasy@github”的 md5 hash 值为 89242549883a2ef85dc81b90fb606046。 $ echo “hello blockchain world, this is yeasy@github”|md5 89242549883a2ef85dc81b90fb606046 这意味着我们只要对某文件进行 md5 hash 计算,得到结果为 89242549883a2ef85dc81b90fb606046,这就说明文件内容极大概率上就是 “hello blockchain world, this is yeasy@github”。可见,hash 的核心思想十分类似于基于内容的编址或命名。 注:md5 是一个经典的 hash 算法,其和 SHA-1 算法都已被 证明 安全性不足应用于商业场景。 一个优秀的 hash 算法,将能实现: 正向快速:给定明文和 hash 算法,在有限时间和有限资源内能计算出 hash 值。 逆向困难:给定(若干) hash 值,在有限时间内很难(基本不可能)逆推出明文。 输入敏感:原始输入信息修改一点信息,产生的 hash 值看起来应该都有很大不同。 冲突避免:很难找到两段内容不同的明文,使得它们的 hash 值一致(发生冲突)。 冲突避免有时候又被称为“抗碰撞性”。如果给定一个明文前提下,无法找到碰撞的另一个明文,称为“抗弱碰撞性”;如果无法找到任意两个明文,发生碰撞,则称算法具有“抗强碰撞性”。 流行的算法 目前流行的 hash 算法包括 MD5(已被证明不够安全)和 SHA-1,两者均以 MD4 为基础设计的。 MD4(RFC 1320)是 MIT 的 Ronald L. Rivest 在 1990 年设计的,MD 是 Message Digest 的缩写。其输出为 128 位。MD4 并不足够安全。 MD5(RFC 1321)是 Rivest 于1991年对 MD4 的改进版本。它对输入仍以 512 位分组,其输出是 128 位。MD5 比 MD4 复杂,并且计算速度要慢一点,但更安全一些。MD5 并不足够安全。 SHA1 (Secure Hash Algorithm)是由 NIST NSA 设计,它的输出为长度 160 位的 hash 值,因此抗穷举性更好。SHA-1 设计时基于和 MD4 相同原理,并且模仿了该算法。 为了提高安全性,NIST NSA 还设计出了 SHA-224、SHA-256、SHA-384,和 SHA-512 算法(统称为 SHA-2),跟 SHA-1 算法原理类似。 一般的,hash 算法都是算力敏感型,意味着计算资源是瓶颈,主频越高的 CPU 进行 hash 的速度也越快。 也有一些 hash 算法不是算力敏感的,例如 scrypt,需要大量的内存资源,节点不能通过简单的增加更多 CPU 来获得 hash 性能的提升。 顾名思义,数字摘要是对数字内容进行 hash 运算,获取唯一的摘要值来指代原始数字内容。 数字摘要是解决确保内容没被篡改过的问题(利用 hash 函数的抗碰撞性特点)。 数字摘要是 hash 算法最重要的一个用途。 在网络上下载软件或文件时,往往同时会提供一个数字摘要值,用户下载下来原始文件可以自行进行计算,并同提供的摘要值进行比对,以确保内容没有被修改过。 ########################## 对于哈希,我们可能认识还不够彻底,下面在补充一些内容 把网址A,转换成数字1。网址B,转换成数字2。一个网址X,转换成数字N,根据数字N作为下标,就可以快速地查找出网址X的信息。这个转换的过程就是哈希算法。哈希算法并不是一种特定的算法,只要能完成这种转换的算法都是哈希算法。但是评定一个算法是否是好的哈希算法,要根据算法的离散度和冲突概率来评定。 什么是哈希表和哈希算法?比如这里有一万首歌,给你一首新的歌X,要求你确认这首歌是否在那一万首歌之内。无疑,将一万首歌一个一个比对非常慢。但如果存在一种方式,能将一万首歌的每首数据浓缩到一个数字(称为哈希码)中,于是得到一万个数字,那么用同样的算法计算新的歌X的编码,看看歌X的编码是否在之前那一万个数字中,就能知道歌X是否在那一万首歌中。作为例子,如果要你组织那一万首歌,一个简单的哈希算法就是让歌曲所占硬盘的字节数作为哈希码。这样的话,你可以让一万首歌“按照大小排序”,然后遇到一首新的歌,只要看看新的歌的字节数是否和已有的一万首歌中的某一首的字节数相同,就知道新的歌是否在那一万首歌之内了。当然这个简单的哈希算法很容易出现两者同样大小的歌曲,这就是发送了碰撞。而好的哈希算法发生碰撞的几率非常小。

 
推荐文章
深情的爆米花  ·  信息安全(一)-编码算法【base64编码、base58编码】、哈希算法【MD、sha、RipeMD-XX、hamc】 - bjlhx15
1 周前
谦虚好学的感冒药  ·  区块链概念1:Hash 算法开发者社区
1 周前
活泼的卤蛋  ·  东阳市巍山高级中学
1 年前
任性的柚子  ·  "国漫同人游戏天花板 "王者荣耀同人游戏 国漫美女合集-_哔哩哔哩_bilibili
2 年前
豪情万千的小刀  ·  你最关心的,联影医疗正在回答:130亿现金无负债,继续双20%增长,在手订单很充沛,研发投入大爆发_手机新浪网
2 年前
爱看书的鼠标垫  ·  如何评价罗马尼亚电影《倒霉性爱,发狂黄片》? - 知乎
2 年前
失落的饼干  ·  我与四个顾先生视频,我与四个顾先生好看动漫动画推荐 - 快看漫画
2 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号