文章简介:本文通过一段虚构的神话穿越故事,带领大家了解对称加密算法的不可取之处,同时本文会借助这个生动的神话故事,和现实中与我们利益相关的比特币钱包软件,来让大家进一步了解到什么是哈希算法,以及哈希算法不能够和为什么不能够进行信息的安全传输。
作者简介:我是简Dao手,真心想写出好文章的普通人,今后我将从小白的角度去认真完成每一篇文章,让所有像我一样的小白都能够看得懂;希望在以后的路上,大家一起写作一起进步,让写作使我们变得不普通。
我的文章希望你来读。
盘古大帝的小学算术题
盘古初创天地,万物由混沌状态慢慢复苏,可天地仍一片黑暗,大地寸草不生;盘古不忍万物生灵受苦,就以左眼为太阳,右眼为月亮,血液化作江河,汗水为雨露滋润万物;最后将这把开天神斧就立在了天地之间,以保天地不再重合,万物才有生机。
我作为一个受过高等教育的大学生,因使用电饭煲没有注意用电安全----触电了;结果哥们就穿越了,一阵头晕目眩之后,哥们就来到了盘古时代。
我许久才平复下此时的心情,四处打量发现有一把上不见顶,下不见底,周遭雾气缭绕的大斧头立在了我的面前,它顶天立地,气势恢宏,让人望之心生忌惮,与其说是立在我的面前,可我知道如果真要我走到这把斧头的面前,那是走上十年都走不到---除非再走十年。我知道这就是那把传说中的开天神斧,我仔细打量起来,阳光照射在神斧上,熠熠生光,耀的我睁不开眼睛,突然一片云朵飘来,遮住了些许阳光,刹那间我在神斧上看到了一个公式,对就是公式。
*这个公式就是:6=3 []
我百思不得其解,见一位一身红毛(自己一身红毛说别人是妖怪?)的妖怪大叔,向我这边走来;妖怪大叔待我很和气,可惜我俩语言不通,对我一阵乱比划,我也不知道他想说啥;这时我才突然想起来,我身上带着科大讯飞的翻译器;于是我俩通过科大讯飞的翻译器聊了起来。
一阵沟通之后,我才知道这里天地之间的生老病死、昼夜交替、打雷下雨全由这把斧头控制(智能合约?),至于斧头上面的公式,妖怪大叔告诉我说:这个神奇的符号我们族长也不知道是什么意思,传说斧头中封印着邪魔,而封印就是这个公式。
听后我心下大惊,想这盘古也太大意了,这样的简单算术题,小学生都会,何况是我?万一哥们破解出盘古大帝留下的算术题,面临的是邪魔乱行,那哥们小命也不保啊,还是先走为妙。
我竭力停下脑中不受控制的思绪,心想还是吃些饭菜才有力气赶路,于是受妖怪大叔邀请来到大叔家做客,酒足饭饱后,我向妖怪大叔辞行,去寻找回家的办法!
离去之际我看到几只羊,在羊圈里里吃草,心想刚刚喝的羊奶就是这几只羊儿的吧,心生感激向它们点头示谢;低头抬头之间,我呆若木鸡,面如死灰,惊吓的动弹不得;只见圈养羊的篱笆上栓了一条麻绳,你以为我被蛇咬过吗?错了,没有;那你以为我是怕羊?更不可能。
那我怕的是什么呢?卧槽,原来麻绳上打了结,细细数下来有六个!!! 而羊圈里呢,正好有六只羊,你说我能不怕吗?也就是说这里的妖怪已经学会了-----结绳计数,从另一个角度来看----妖怪们已经会简单的加法了,那不久之后他们就能学会乘法,再不久就会有妖怪能解出盘古大帝留下的算术题----还TM是小学算术题。如果被居心叵测的妖怪解出答案,那这个世界会因此生灵涂炭,而哥们我也将会命不久矣。
这里说个题外话:可能有人会问,在你说的那个远古世界里,加减乘除这些基础数学算法还成立吗?答案是当然成立,数学不仅是远古时代还是整个宇宙存在的基础,数学你见或不见,它就在那里,人类的每一个数学公式在发现之前就已经存在,人类只是幸运的在数学大厦里捡到了一两个而已。
可能因为我的存在使这把斧头受到了威胁,顿时天昏地暗,电闪雷鸣,神斧开始射出巨大的光,这光笼罩着我,我睁不开眼睛,不知道怎么办才好,一阵头晕目眩之后,我又回到了现代,而我电饭煲里的米饭刚好煮熟。
我给盘古出出主意
我回到现代之后,时常想起妖怪大叔家的羊奶,一想起羊奶我就想起麻绳上的结,一想起麻绳上的结我就想起
盘古那不靠谱的算术题。
我不忍心妖怪大叔在那边可能会面临丢命的危险,就想着给盘古设计一套加密算法,这个加密算法即使被他人知道加密的原理,也拿它没有办法,破解不了。
下面我们开始:
1.假设盘古给斧头上一把锁,锁的密码是12345,然后将12345+56789。
2.将结果三次方,取4-11位数组成一个八位数。
3.用这个八位数除以5566求余数
(如果你想让这个加密算法更加安全,可以继续加条件,就像你说:这是我小姑子的二姨家的婶子的外甥女的。。。。。的邻居,最后TMD谁知道你们之间是什么关系)
对应的计算过程如下:
12345+56789=69134
691346913469134=330426641298104
42664129mod5566=739
现在盘古可以将56789交给各大妖怪族的族长,或者就公布于众直接写在他的斧头上;至于12345将作为密钥只有盘古自己知道。
哈哈,现在盘古的加密算法的法则就明晃晃的写在了斧头上,可12345大家都不知道,大家也很难由739倒推出12345,别说是远古时代就算是现在我让你用计算机都很难倒推出12345。
可盘古的问题并没有彻底解决。
盘古与马化腾 之 哈希算法不能做的事
现在这套加密算法算是很安全了,可是盘古的肉身已经不存在了,他命不久矣,想在生命的最后一刻将12345密钥发送给我,让我来保护天地间的平衡与安全-----谁让哥们是被电过的男人呢!可哥们已经回到了现代,我没法去见他啊!
让妖怪大叔用镖局护送过来?别扯了,有劫匪。那盘古神通广大,通过微信、邮件发给我?也不行,马化腾在一旁盯着呢。
真是古有劫镖的,今有马化腾啊。
有没有发现就连盘古想把12345在不为人知的情况下告诉我是多么的困难。
上面我们给盘古设计的加密算法,在密码学中称之为单向加密,也就是我们常常听到的哈希算法。
一个可靠的哈希算法要满足以下几个条件:
· 由12345很容易算出739
· 由739很难算出12345
· 很难找到除12345以外的其他数,使其等于739
现在我们知道哈希算法很牛叉,加密很安全,但是它只能够用来验证结果不能够用来进行信息的安全传输。
我们可以再来看一个与我们利益相关的例子。
我想大家都听说过bitcoin core这款比特币钱包软件(第一款,由中本聪开发出来),我们可以到官网https://bitcoin.org下载,这是一款全节点钱包(全网交易数据都会被放到一台电脑中),但是我们也知道混币圈的危险性,稍有不慎就会被黑客有机可乘。
所以我们在下载bitcoin core钱包的时候,官网会提供另一款小插件MD5 & SHA Checksum Utility的下载,下载完钱包文件后你可以将其拖入Checksum中,然后对比SHA256的数值是否与官网提供的原SHA256相同(对照的SHA256文本官网也会提供下载)。
也就是说如果你下载的钱包软件被黑客篡改了,那么哈希后的SHA256数值会与官网提供的有出入,如果没有那你就可以放心使用了。
(图片来自 区块链生存训练第二版书中截图。)
由图中我们看到MD5、SHA-1、SHA-256、SHA-256这些都是常用的哈希算法,MD5哈希后有32个字符,SHA-256则有64个字符,所以SHA-256哈希算法更安全一些,更难找到12345外的另一个数字使其算法等于739。
这里例子也是,我们只能通过将bitcoin core文件拖入cheksum中验证哈希后的SHA-256值是否与官网提供给我们的相同,但是如果你想将bitcoin core软件文件加密传输给我,则是行不通的,哈希算法没有这方面的功能。
盘古的遗愿
难道就没有一套加密算法让我们躲开马化腾躲开互联网,安全的进行信息往来吗?我们要自由,我们要隐私。
答案是当然有,下次的文章就让我们来完成盘古的遗愿----让信息能够安全的被传输。
我是简Dao手,真心想写出好文章的普通人,今后我将从小白的角度去认真完成每一篇文章,让所有像我一样的小白都能够看得懂;希望在以后的路上,大家一起写作一起进步,让写作使我们变得不普通。
我的文章希望你来读。