链客,专为开发者而生,有问必答!

此文章来自链客区块链技术问答社区,未经允许拒绝转载。


区块链概念1:Hash 算法

作用在学习哈希算法前,我们需要知道哈希在区块链的作用哈希算法的作用如下:区块链通过哈希算法对一个交易区块中的交易信息进行加密,并把信息压缩成由一串数字和字母组成的散列字符串。区块链的哈希值能够唯一而精准地标识一个区块,区块链中任意节点通过简单的哈希计算都接获得这个区块的哈希值,计算出的哈希值没有变化也就意味着区块链中的信息没有被篡改。定义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 算法最重要的一个用途。在网络上下载软件或文件时,往往同时会提供一个数字摘要值,用户下载下来原始文件可以自行进行计算,并同提供的摘要值进行比对,以确保内容没有被修改过。

区块链概念:Hash 算法相关推荐

  1. 区块链笔记-Hash算法

    链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. 区块链笔记-Hash算法 区块链技术是一系列技术的结合,建立新的技术架构,hash算法是很重要的一块,如果理解不当的地方 ...

  2. 从构建区块链理解区块链概念

    从构建区块链理解区块链概念 import hashlib import json from datetime import time from urllib.parse import urlparse ...

  3. 区块链概念、原理、特点

    01 区块链概念 区块链可以借由密码学,串接并保护内容的串联交易记录(又称区块).在区块链中,区块内容具有难以篡改的特性,每一个区块都包含了前一个区块的加密散列.相应时间戳记以及交易数据(通常用Has ...

  4. 60秒ICO募资2.35亿,AI+区块链概念,这个风口上的公司有点怪

    问耕 发自 凹非寺 量子位 出品 | 公众号 QbitAI 3600万美元,约合人民币2.35亿. 募集这样一笔钱,需要多久? 在ICO(Initial Coin Offering,首次代币发行)的世 ...

  5. 第十一课 区块链常用共识算法介绍

    上一节课我们学习了共识算法理论基础,今天我们继续深入学习区块链共识算法,通过这节课我们将了解工作量证明.权威证明.权威授权证明.实用拜占庭容错等相关内容. 在学习课程的时候,你也可以领取BaaS平台为 ...

  6. 科普 | 区块链概念最全解析:区块链的下一个十年什么样?

    2019独角兽企业重金招聘Python工程师标准>>> 自从2008年中本聪的比特币白皮书发表,至今区块链已经发展了近十年的时间.但在最近的加密数字货币大热潮中,许多人只知比特币.以 ...

  7. 微软向开发者推出区块链概念验证框架

    微软在近期的一篇博文中宣布了一个新的框架,用以在Azure云平台上加速已通过企业概念验证(PoC)的区块链部署.微软希望用户能在可支持分布式账本(DLT)解决方案的基础设施上,借助于灵活的契约和更少的 ...

  8. CSDN日报191105:2019年11月全国程序员工资统计,区块链工程师比算法工资高

    CSDN日报来啦!给大家奉上当日最新鲜的技术干货! 2019年11月全国程序员工资统计,区块链工程师比算法工资高 作者:有数可据 我每个月第一天(也许是第二天,第三天),会爬招聘网站,并在CSDN发布 ...

  9. 2019年11月全国程序员工资统计,区块链工程师比算法工资高。

    我每个月第一天(也许是第二天,第三天),会爬招聘网站,并在CSDN发布. 趋势 本月全国程序员平均工资为13451元,比上个月略涨. 北上广深杭工资趋势 区块链程序员的工资 职能 工资 系统架构师 2 ...

最新文章

  1. dblink 造成 oracle 服务器 内存_性能故障之内存抖动的诊断过程
  2. pip包重新安装mysql_Ubuntu pip 安装 mysql-python包出错
  3. Java_io体系之BufferedWriter、BufferedReader简介、走进源码及示例——16
  4. python画图代码彩虹-python绘制彩虹图
  5. 转贴:BMP格式详解 二 (转载)
  6. 1.1 torch_数据操作
  7. Codeforces Global Round 12 D. Rating Compression 思维 + 贪心
  8. 计算机中的数(一):数在计算机中的表示
  9. openwrt dhcp 无法获取ip_电脑的 ip 是怎么来的呢?我又没有配置过
  10. 抽象类与接口的区别与联系
  11. 在Android中自定义捕获Application全局异常,可以替换掉系统的强制退出对话框(很有参考价值与实用价值)
  12. 学习Javascript闭包(Closure)(转载+理解心得)
  13. JSP期末考试复习习题及答案
  14. linux怎么修改数据库字段长度,Postsql 修改字段长度和类型
  15. 汽车中控语音导航服务器繁忙,交警大队智能语音导航系统解决方案
  16. linux添加字体库
  17. dep指定版本 go_将 dep 更换为 go mod
  18. 【Python 22】52周存钱挑战2.0(列表list和math函数)
  19. 游戏音乐制作中需要使用那些软件?
  20. php获取哔哩哔哩追番_自己拥有一台服务器可以做哪些很酷的事情?

热门文章

  1. div 自动换行_js自动打字--autotypejs
  2. cmd查看所有数据库 db2_DB2数据库常用命令集
  3. iOS应用模块化的思考及落地方案(一)模块的划分及模块化工作流程
  4. 仅需6步,教你轻易撕掉app开发框架的神秘面纱(3):构造具有个人特色的MVP模式
  5. 【微信小程序之画布】四:手指触摸绘波浪线
  6. iOS:一句代码实现文本输入的限制
  7. JS中8个常见的陷阱
  8. java中Array和ArrayList区别
  9. C#编码实践:使用委托和特性调用指定函数
  10. 看大众点评如何通过实时监控系统CAT打造7*24服务