点击上方“蓝色字”可关注我们!

作者:Bitcoin Magazine

了解比特币和区块链非常简单,只要理解三部分, 第一是了解其数据结构,第二个就是分布式储存和共识,第三就是网络和节点。

哈希函数不管是在数据结构还是在分布式共识方面都是非常重要的,

那么什么是哈希函数呢?

一般来说哈希函数是一类可以把任何数据转换成固定长度输出(也就是我们说的哈希值)的数学函数,而且可以被高效的计算, 所以我们一般会用来构建哈希表等。

在此基础上密码学哈希还多了3个特性。

是无冲突

可以隐藏原数据

可以用来创建搜索谜题

无冲突

无冲突的意思呢,是指这个哈希函数永远不会把两个不同的数转换成同样的哈希值。

我们以sha-256为例(sha-256也是比特币里用到的哈希函数,属于sha-2系列),它可以将数据,不管这个数据(输入)多大或者多小都可以转换成256比特,也就是32字节的一个哈希值。

就算这个数据(输入)只更改来一个标点符号,生成的哈希值也是完全不一样的。

但是理论上来讲,哈希值重复的情况是存在的,我们称这种情况为冲突,因为你想啊, 这个输入是无限的,你可以输入任何数据,大的小的都行。 而这个输出,哈希值它是有限的。(32位字母和数字的组合,组合的次数是有限的)但是这个数字是很大的,如果你要找到sha-256哈希值重复的这种情况,就是试2的130次方的输入,这个数字是一个天文数字,我的电脑都打不出来。 所以呢没有人能找到冲突也就是哈希值重复的情况。

在确定来哈希值的独一性后,我们就可以用哈希值来作为识别文件。在文件很大的情况下就异常的有用了。当然这个只是初级玩家的用法。

高阶玩家玩更溜了。

相信玩编程的朋友都知道一种数据结构叫linked list。

单向linked list

就是用指针把不同的数据块按顺序链接起来,那么现在我们确定了哈希值的独一性后,是不是可以把这个哈希值拿来当指针用呢?

具体怎么实现呢?

首先计算出第一个数据块的哈希值,然后把这个值放在第二个数据块里,再计算第二个数据块(包含了第一个数据块的哈希值)值,以此类推,你就得到了一种新的数据结构,俗称区块链。

当然,这只是区块链数据结构,而不是我们现在说的区块链技术(后者还包含了分布式储存和分布式共识,还有点对点网络)然后这个数据结构比起linkedlist多了一个特性,那就是防篡改。任何人想要修改这个链里数据块的消息,都会很容易被发现,因为哈希值会对不上。

可以隐藏原数据

密码哈希函数的第二个特性就是可以隐藏原数据,因为哈希函数是单向函数,你可以把数据转换成哈希值,但是不能把哈希值转换成原数据。因此,哈希函数有可以隐藏原数据的特性。

这个就非常有用了,最知名的应用就是拿来储存密码。

比如说你在某网站的密码,如果这个网站直接把你的密码存在了他们的服务器上,那是非常不安全的,但是如果是储存了你的密码对应的哈希值,你每次输入密码的时候后台自动转化成哈希值,只要哈希值对上就可以登陆了。这样安全性就提高了很多。

但是为什么还有那么多盗号,盗密码的情况发生呢?那可能是因为你的密码很常见,所以黑客只要需要输入所有常见的密码,然后用哈希值一对比,就知道了。

所以要想安全的隐藏“原数据的”的话,对输入的随机性和广泛性有要求的。 也就是为什么很多网站硬性要求密码要有符号,有大写字母,小写字母,数字等。

可以用来创建搜索谜题

第三个特性就是创建搜索谜题,就是我用哈希函数创建一系列的数学难题,然后再给出一定范围(难度随着范围大小变大变小)的可能答案,然后让你一个个的去试,(注意的是,这个是没有任何捷径的,就像我们之前将的那样,改一个标点符号哈希值就会完全不一样,而且这个哈希值的生成也是没有任何逻辑和规律可循,所以只能一个一个的试)如果运气好,找到了正确的答案,把答案和你解决的这个难题的信息一起哈希就会得到特殊的哈希值。(如以很多0开头啊,或者以很多x结束啊类似的) 。

这个运用在比特币挖矿里, 如果你找到了答案(nonce),然后和区块头里的信息一起哈希,就会得到一个以很多0开头的特殊的哈希值。

本文仅代表作者个人观点,不代表区块链铅笔的立场,不构成投资建议,内容仅供参考。

3分钟了解什么是区块链?(中文动画)|(英文动画教程)

3分钟了解什么是DAO?(中文动画)|(英文动画教程)

3分钟看懂以太坊和智能合约?(中文动画)|(英语动画教程)

3分钟了解比特币挖矿和区块链共识机制?(中文动画)|(英文动画教程)

3分钟了解公有链和私有链(中文动画教程)|(英文动画教程)

3分钟了解区块链的六层模型(中文动画教程)|(英文动画教程)

什么是区块链英文版(动画教程)

肖风:区块链与另类资产配置

逐鹿区块链!详解三大巨头BAT区块链战略布局

麦肯锡报告:区块链对保险行业的影响

八张图表解读区块链的未来发展

震惊全球的The DAO黑客事件全程回顾

Circle获得包括IDG、百度、万向在内6000万美元融资

关注本公众号后,进入公众号

回复关键词可以查阅资料,以下是部分关键词

回复 WEF ,查看《WEF:世界经济论坛认为区块链是互联网金融行业的未来报告》

回复 智能合约 ,查看《巴克莱银行报告》

回复 moody ,查看《穆迪120个区块链项目报告》

回复 SWIFT ,查看SWIFT《区块链对证券交易全流程产生的影响及潜力》报告

回复 论文11 ,查看论文《可扩展的去中心区块链》

回复 埃森哲2 ,查看埃森哲《区块链每年可以为投资银行节省120亿美元》报告

回复 联合国报告 ,查看联合国报告《数字货币和区块链技术在构建社会和可信金融之间扮演的角色》

回复 用户特性 ,查看普林斯顿大学首本比特币教科书初稿《比特币用户的特性(Characteristics of Bitcoin Users)》

回复 普林斯顿 ,查看普林斯顿大学首本比特币教科书初稿《比特币和数字货币技术(Bitcoin and Cryptocurrency Technologies)》

回复 IMF,查看国际货币基金组织报告《Virtual Currencies and Beyond: Initial Considerations》

回复 DTCC ,查看美国存管信托清算公司报告《DTCC: 拥抱分布式》

回复 广发 ,查看报告《科技前沿报告:区块链:正快速走进公众和政策视野》

回复 川财1 ,查看报告《川财证券:区块链技术调研报告之一:具有颠覆所有行业的可能性》

回复 川财2 ,查看报告《川财证券:区块链技术调研报告之二:区块链技术进化论-区块链技术的国内实践和展望》

回复 桑坦德 ,查看桑坦德银行报告《The Fintech 2.0 Paper: rebooting financial services》

回复 拜占庭 ,查看《拜占庭将军问题详解》

回复 论文1 ,查看论文《比特币闪电网络:可扩展的离线即时支付》

回复 论文2 ,查看论文《比特币骨干协议》

回复 论文3 ,查看论文《数字货币是否应该进入Barbados央行国际储备货币组合中》

回复 帮助 ,查看本公众号全部关键词列表

点击下方“阅读原文”查看更多,页面出现后再点击“来源”可以查看译文原文链接 ↓↓↓

哈希函数--区块链的back bone相关推荐

  1. 变色龙哈希函数-区块链

    变色龙哈希调研 1. 调研背景 1.1哈希函数定义 哈希函数是一类具有以下特征的函数:将任意长度输入的字串可转换成一个固定长度的字串,通过原始字串可以很容易地算出转换后的字串,通过转换后的字串很难还原 ...

  2. 区块链(一)----哈希与区块链

    什么是哈希? 简单来说,哈希就是输入任意长度的字符串都可以产生固定大小的输出.在比特币这种加密货币中,交易就是输入,然后经过哈希算法(比特币采用的是 SHA - 256),产生固定长度的输出. 下面就 ...

  3. 除留余数法构造哈希函数并用链地址法处理哈希冲突【C++实现】

    1.题目描述 哈希函数为H(key)=key%13,哈希冲突处理方法为:链地址法 c语言版数据结构上的例子 2.代码实现 首先建立一个哈希链表结点类HashNode,用于存放处理冲突时的关键字,其数据 ...

  4. 区块链知识整理之系统架构及各层功能

    文章目录 前言 一.区块链技术基础模型和关键技术 1.1系统架构 1.1.1数据层 1.1.2 网络层 1.1.3 共识层 1.1.4 合约层 参考文献资料汇总 前言 本篇笔记是阅读区块链综述论文 [ ...

  5. 区块链 - 哈希(Hash)

    章节 区块链 – 介绍 区块链 – 发展历史 区块链 – 比特币 区块链 – 应用发展阶段 区块链 – 非对称加密 区块链 – 哈希(Hash) 区块链 – 挖矿 区块链 – 链接区块 区块链 – 工 ...

  6. 区块链技术4:密码学之哈希

    所以,我们非常需要这样一种电子支付系统,它基于密码学原理而不基于信用,使得任何达成一致的双方,能够直接进行支付,从而不需要第三方中介的参与. <比特币白皮书> bitcoin是一种加密货币 ...

  7. 如何创建一个最小的区块链

    链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. 这是我在一个外文网站上看到的一篇博文,作者通过50行代码写出了区块链的简化版本.麻雀虽小,但是五脏俱全.我觉得通过实践, ...

  8. 区块链概念:Hash 算法

    链客,专为开发者而生,有问必答! 此文章来自链客区块链技术问答社区,未经允许拒绝转载. 区块链概念1:Hash 算法 作用在学习哈希算法前,我们需要知道哈希在区块链的作用哈希算法的作用如下:区块链通过 ...

  9. 用区块链保护共享数据?存储初创公司Gospel开始试水

    初创公司Gospel Technology声称正在利用区块链(Blockchain)来保护和验证可共享的数据.Gospel称,区块链技术的方法可以做到这一点,而且要比任何替代方法更简单. Gospel ...

最新文章

  1. virtualbox安装centos6.5碰到的问题
  2. 小冰公司CEO李笛:AI不会江郎才尽,创造力只会持续向上攀升丨MEET2022
  3. Linux c语言虚拟串口,利用socat和cutecom实现Linux虚拟串口通信
  4. windows 技巧篇-清除共享地址访问缓存信息,共享路径临时访问用户切换方法
  5. c++ fork 进程时 共享内存_因为没答好进程间通信,面试挂了...
  6. Post请求如何取消异步
  7. [斯坦福]距离编码-更为强大的GNN
  8. node将当前文件上传到服务器,以编程方式将文件从node.js上传到另一个Web服务器...
  9. ROS安装时rosdep init与rosdep update问题解决方法(2022.04.08亲测)
  10. iOS开发-iPhone屏幕尺寸
  11. 【中医学】11 常见病证-1:感冒:咳嗽:泄泻:水肿:淋证:心痛
  12. java halt_Java Runtime halt()方法
  13. 如何配置 SSH 免密码登录
  14. 区块链和博弈论(以下转载自网络)
  15. Vue报错记录——无法找到app
  16. iOS 字体转换
  17. 四年级下册计算机工作计划,四年级下册信息技术教学计划
  18. python np.random.seed直观程序理解
  19. 计算机网络——配置动态路由实验
  20. android模拟器拍照图,android模拟器无法使用camera拍照

热门文章

  1. python中的sql(pymysql和sqlalchemy)
  2. mysql提示access denied for user ''@'localhost' to database
  3. 人脸识别之人脸检测(一)
  4. linux不支持modprobe命令,Linux中的Modprobe命令
  5. 【第十六篇】Camunda系列-动态表单
  6. python 查找两列不同的值、相同的值(dataframe数据探索)
  7. 11月23日云栖精选夜读:阿里AI Labs王刚解读9小时卖出百万台的“天猫精灵” | 高山大学(GASA)
  8. 阅读笔记 | The Soot framework for Java program analysis:a retrospective
  9. python实现微信机器人: 登录微信、消息接收、自动回复功能
  10. Jetson Xavier NX部署PaddlePaddle框架