IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 区块链 -> 比特币和区块链的基石:哈希函数 -> 正文阅读

[区块链]比特币和区块链的基石:哈希函数

之前我们介绍过比特币诞生的偶然性和必然性,比特币是历史上第一次成功的个人依靠技术手段发行货币。若想要这个货币能够顺利流通起来,“中本聪”有很多事情要做。他必须让人们相信,这个电子现金系统的账本不是由他“中本聪”,也不是任何人能够控制和篡改的。为达到这样的自证清白的效果,他必须引用一种强大的验证机制,可以让任何人快速地发现数据被篡改,让坏人无处遁形。这种数据防篡改的技术基石正是哈希函数。在这里插入图片描述

哈希函数的最基础作用是保证数据的一致性。试想,Alice在经过了一晚上的努力之后终于编写出一个非常重要的文件,她第二天要利用这个文件做很多关键的操作。那么,她如何保证这个文件没有被篡改呢?她的主机很可能被黑客或其他人侵入,如果文件直接保存在主机上,很可能的结果是文件被篡改了,如果这个文件是一个发放工资单的列表,黑客很可能会加入一些原本不存在的名字而使Alice上当受骗。在这里插入图片描述

哈希函数可以解决Alice的后顾之忧,她可以在文件编写完成后,利用哈希函数对文件求取一个哈希值,然后将这个哈希值放在随身携带的U盘或其他安全环境。这样,再次决定使用文件时,只需再计算一次文件的哈希值,如果哈希值与自己保存的哈希值一致,那么也就证明了文件没有被篡改过。

很多人可能想到了,黑客又不是笨蛋,他完全可以在得到文件时先计算一次哈希值,然后修改文件后,再想办法使新的哈希值与原来的哈希值相同。这是一个不错的想法,如果这个哈哈希函数的算法不那么稳固的话,确实是可以做到的。
在这里插入图片描述

我们还是先来说说哈希函数的特性,哈希函数可以归纳为公式:Y=H(x)。这里面的H函数有个特点,对于不同的输入x(没有长度限定),它都可以产生一个固定长度的Y,也就是哈希值。事情好像在朝着我们的预期发展,由于Y的长度是固定的,那么也可以认为Y的取值范围是有限的,而x的长度是不固定的,那么x的取值范围是无限的,这势必会导致一个结果,出现一个x和x’,x!=x’,但H(x)=H(x’)。这就是所谓的碰撞!
在这里插入图片描述

回到前面的话题,如果黑客篡改了文件,并利用碰撞找到一个办法使新文件的哈希值与旧文件相同,他就作恶成功了!当然,这是不可能的,如果真的发生了我们描述的画面,那么比特币早已经胎死腹中了!事实上,哈希函数是防碰撞的,当然这个防碰撞是有一定前提的。像MD4、MD5、SHA1这样的哈希函数已经被我国密码学家、中科院院士王小云带领她的团队破解了。比特币使用的是SHA2里面的sha256哈希函数,也就是说这个哈希值的取值范围是2的256次幂,在这样的取值范围之内想要达到一次碰撞只是理论上的可能,站在这个角度上说比特币的哈希函数是防碰撞的(我们可以在下一篇来证明这个观点)。

有了哈希函数的防碰撞特性,当一个数据被修改后,可以立即通过哈希值验证出来,而比特币的基础数据结构默克尔树,以及时序的区块链式结构都是基于哈希函数构造的,这样的两个结构可以保证区块链发生的每个交易都不可篡改,一旦篡改会立刻被验证出来,并被其他节点所抛弃。

关于哈希函数的知识点尚未介绍完,我们将在下一篇再展开讨论。欢迎大家留言,评论。

  区块链 最新文章
盘点具备盈利潜力的几大加密板块,以及潜在
阅读笔记|让区块空间成为商品,打造Web3云
区块链1.0-比特币的数据结构
Team Finance被黑分析|黑客自建Token“瞒天
区块链≠绿色?波卡或成 Web3“生态环保”标
期货从入门到高深之手动交易系列D1课
以太坊基础---区块验证
进入以太坊合并的五个数字
经典同态加密算法Paillier解读 - 原理、实现
IPFS/Filecoin学习知识科普(四)
上一篇文章      下一篇文章      查看所有文章
加:2021-07-07 11:44:46  更:2021-07-07 11:45:56 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/26 22:28:44-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码