哈希运算(1)

什么是哈希运算
简单的说,哈希运算就是接受一个不限长度的输入(input)返回一个固定长度的输出(output)。哈希在现代密码学中有着很广泛的应用。哈希运算有很多种算法,比特币用了其中的一种,SHA256(Secure Hashing Algorithm 256)。这里提一下,在SHA256之前,有一种加密手段叫做MD5,很多期待在游侠网下载到破解版《实况足球2017》的同学可能会看到类似的帖子《实况足球2017很难被破解,因其采用了MD5加密技术》(当然,最终还是惨遭毒手了)。
总之,我们只需了解SHA256是比MD5更先进的一种加密手段,各自的应用场景这里将不多做介绍(我突然有个疑问,是不是我之前看过很多文章的作者在说到不多做介绍的时候,也是跟我一样,其实是不懂)。为了更直观地理解哈希运算,我这插入两个例子。
在这里插入图片描述
可以看到,无论输入的是什么,哈希值永远是一个256bit的字符串。输入的值不仅仅局限于是词,你可以输入一整本小说,你可以输入一首mp3格式的音乐,你也可以输入整个互联网,但他们的哈希值永远是256bit的字符串。有兴趣想再详细了解的同学,带着梯子戳这里。
在密码学中,要达到公认的安全,作为哈希算法需要有以下特征,一起来过一下。

  1. 确定性这个特征是指,无论你对同一个输入尝试多少次哈希运算,返回的哈希值是恒定不变的。这个特征尤为关键是因为如果每次得到的哈希值不一样,你的输入值就无迹可寻,哈希运算就没有应用场景了。
    1. 快速计算能力很好理解,哈希值的返还是相当迅速的。这可以保证运用时的流畅性。我们这里就试着让我的586来跑一段输入,看看具体消耗了多少时间。0.4毫秒。
      在这里插入图片描述
  2. 原像抗力(Pre-image Resistance)

一句话描述的话,就是已知H(A),几乎不可能找到A,这里A是指输入,H(A)就是输入的哈希值。

你们一定好奇,我们这里为什么要用“几乎不可能”。很好理解,我们来举个例子。 假设你在扔硬币,当你扔到正面时,输出的哈希值长这样:"XE3890021…………………………”;当你扔到反面时,输出的哈希值长这样:“WCNMLGBO8291………………”。所以当你看到XE开头的哈希值,你可以知道扔的是正面,同理当你看到WC开头的哈希值时,你知道扔的是反面。这很简单,仅仅因为现在的情景下,只有正面和反面两种可能。但是想象一下,在现实世界中,有无数种输入的可能性存在,你希望通过H(A)找到A,你只有一种办法,那就是枚举,让计算机经过无数次的哈希运算去匹配H(A)。真这么做,可能找到A时,宇宙已经爆炸了(然而布冯还在尤文图斯守门)。

具体的计算

最好的情况,你试了一次,就试出来了。这种情况,怎么说呢,小红,出来看上帝。
最差的情况,你试了2128-1次。怎么说呢,我还是服(如果你没有语言基础,这里是次方的意思)。
平均的情况,你试了2^128/2次。宇宙还是爆炸了
4. 输入微小的改动,哈希值会完全不同

不废话,看图比较哈希值的差距吧!
在这里插入图片描述
5. 碰撞抗力
条件:现在有两个不同的输入,一个是A,一个是B,H(A)是A的哈希值,H(B)是B的哈希值结论: H(A) =! H(B) (如果没有语言基础,=!表示“不等于”)什么意思呢,大概意思就是如果A和B不相等,那H(A) = H(B)的可能性几乎为0。又来了,“几乎”,这次我们说这个话题之前,先讨论一个有趣的话题:生日悖论(Birthday Parodox)
什么是生日悖论
你在路上走,随便找一个小姐姐搭话:“小姐姐,小姐姐,我给你个东西。“这个小姐姐的生日和你是同一天的概率很小,精确的说是1/365,更精确的说是4/(365*4+1),约等于0.27%的概率,很低。然而,如果我把你扔进曼联足球队里,这个足球队里连教练和球员一共有23人。那现在这个足球队里,有两个人的生日是相同的概率是多少呢?我先告诉你结论,是50%。
在这里插入图片描述
证明
通过条件概率,可得n个人时,没有任意两个人生日相同的概率
在这里插入图片描述
说了这么多,就是想解释两个字:”几乎“。
6. 解谜性我知道你们读到这里已经很疲劳了,我同样是。本来攒足了干劲想一天把哈希运算说完的,但是写到这里我已经体力不支了,所以我在整篇文章的标题后面偷偷加上了”(1)“。这是块难啃的骨头,但它相当的关键,在下一篇里,你需要用到这个知识点去真正理解比特币矿工挖矿时,到底是在干什么。但是我保证这是本文的最后一个知识点。知识点之后,只有小红,或者你们的会所嫩模。
在这里插入图片描述
什么是high min-entropy?
一个简单的理解,如果我让你从1-5中,任意选一个值k,那就是low min-entropy分布;如果我让你从1-100000000000000000中,任意选一个值k,那就是high min-entropy分布。
在这里插入图片描述
是不是有点理解了?假设你现在有一个输出值Y,让你在一个很大的范围内找一个字符串k,你几乎不可能找到一个X,使得X+k的哈希值等于Y。

文章仅为学习使用,
转载自《哈希运算 — 理解区块链的关键(1)》
原文链接https://m.toutiao.com/i6664857059407692295/?traffic_source=CS1114&in_ogs=1&utm_source=HW&source=search_tab&utm_medium=wap_search&prevent_activate=1&original_source=1&in_tfs=HW&channel=

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值