什么是哈希运算

全文摘抄自知乎区块链九尾大神https://zhuanlan.zhihu.com/p/34517415,
仅是为了个人记忆。并后续加入自己的补充理解

哈希运算

哈希运算就是接受一个不限长度的输入(input)返回一个固定长度的输出(output)。
哈希运算有很多种算法,比特币用了其中的一种,SHA256(Secure Hashing Algorithm 256)。
在这里插入图片描述

从上图可以看出,无论输入的是什么,哈希值永远是一个256bit的字符串。输入的值不仅仅局限于是词,甚至可以输入一整本小说,或者一首mp3格式的音乐,你也可以输入整个互联网,但他们的哈希值永远是256bit的字符串。
在这里插入图片描述

哈希算法要达到公认的安全,需要有以下特征

  1. 确定性。无论你对同一个输入尝试多少次哈希运算,返回的哈希值是恒定不变的。这个特征十分关键因为如果每次得到的哈希值不一样,输入值就没办法找到,哈希运算就没有应用场景了。
  2. 快速计算能力。保证运用的流畅性。
  3. 原像抗力(Pre-image Resistance)。根据输出几乎不可能反溯出输入,因为虽然输入有无数种,万一你可以枚举出正确的输入呢(人品大爆发)。
  4. 输入微小的改动,哈希值会完全不同。虽然改动很微小,但是哈希值并不会只改变其中的一部分,而是全部更换。
  5. 碰撞抗力。当有两个不同的输入时,一个是A,一个是B,H(A)是A的哈希值,H(B)是B的哈希值,则H(A) =! H(B),如果A和B不相等,则H(A) = H(B)的可能性几乎为零。
  6. 解谜性。对应每一个输出值Y, 如果k取值于一个high min-entropy(恕在下实在翻译不出)分布,几乎不可能找到一个输入值X,使得 H(k | x)= Y

什么是high min-entropy?如果从1-5中任意选一个值k,那就是low min-entropy分布;
如果从1-10000000000000000中任意选一个值k,那就是high min-entropy分布。

在这里插入图片描述
区块链基于链表的格式,区块包含了数据,并且通过哈希指针连接了前一个区块,如此形成了区块链。
一般的指针只存储了前一个区块的地址,哈希指针就多做了一件事,它还存储了一个区块的哈希值:区块链防篡改的关键。
如果有某个黑客想要篡改其中某一数据块A的数据,那么如果A发生变化,则H(A)也会完全改变,那么下一个数据区块也还会发生改变。因为整个网络中只承认最长的链子,所以他必须不停的修改区块,知道假链变成最长的链。在这个过程中,他面对的是整个网络的其他算力,想要成功的概率几乎为零。

  • 6
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值