别看区块链了,先把哈希值弄明白
来源:米饭君
上了牌桌,看着亲戚们一张张油腻的脸,一边打骰一边抱怨起来,“就知道赌博,现在赌钱可犯法啊,天天就知道坑我这个炮架子。”
二姨扣上一把牌,舔了舔牙上的菜叶说,“你可别从北京回来就吓唬我们,你昨儿不还发朋友圈,说我们这不叫打麻将,咱叫挖矿。”
从北京互金一员变成村里二狗之后,二姨的一句话戳到了我的G点,让我仿佛又到达了在北京币圈时的高潮。
一、请叫我矿工
二姨打一张定个中。
“打完这张之后,请叫我矿工。”我打算先来个小科普,给他们一个下马威洗洗脸,
“这一局麻将,就是一轮挖矿,麻将有胡牌的规矩,挖矿有挖矿的玩法。
我现在这一把屎一样的烂牌,和那一堆还没摸到的牌,毫无规律,我不能保证我能拿到什么牌,但是最后我凑齐了胡了,我就赢了。
区块链挖矿也一样,运算特定的哈希值,谁先算出来,谁就赢了一轮。
讲到这里必须说一下哈希值,首先要了解的是MD5这个概念,全称为:Message Digest Algorithm MD5,这么长串单词也不要慌,你记着MD5就行了。
它是一种散列函数,可能很多粉丝关于函数的概念都还给老师了。你可以当它是一串特定的计算公式。
举个栗子。(+2)就是一种计算公式。
给到任意一个数字比如3,运行这个计算公式则是:3+2=5
而MD5是更复杂的计算公式,复杂到可用于加密。可以百度“MD5加密”自己尝试一下MD5加密。
任意数据,都可以通过MD5这个函数进行运算,得出相应数据。这个数据则被称为“哈希值”
对MD5算法简要的叙述可以为:MD5以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过了一系列的处理后,算法的输出由四个32位分组组成,将这四个32位分组级联后将生成一个128位散列值。(运算过程米饭君也不是很了解,毕竟文科生)
总之你们知道这是一个复杂到一两句话说不清楚的函数就可以了。
MD5有个很强的地方,那就是很难通过哈希值,来反推出原始数据。
比如刚才那个例子,还是运行(+2)的计算公式,如果运算结果是6,那么初始数据大家都知道是4了。毕竟4+2=6是小学题。
而某数据通过MD5运算后得出哈希值,是很难被算出原始数据的。
比如数字“1”的哈希值为“c4ca4238a0b923820dcc509a6f75849b”是不是很厉害。
此外,哪怕原始数据有一点点改动,得出的数据都相差很大,比如:
“11111”的哈希值为“b0baee9d279d34fa1dfd71aadb908c3f”
“11112”的哈希值为“afcb7a2f1c158286b48062cd885a9866”
那么如果我知道某数据的哈希值,想要求得原始数据怎么办,对不起,没办法,只能挨个试了。直到试出原始数据。
为什么大家都在说比特币不会被篡改和伪造。可以在哈希值这里理解一下。
若皇帝发了一封保密的圣旨,然后将圣旨内容的哈希值公示出来,这个过程,虽然大家都知道这封圣旨的哈希值,但是却无法得到圣旨的内容。
然后太监把圣旨宣读给接旨的大臣,大臣只需要将内容求出哈希值,与公示的圣旨哈希值一对比,就知道太监有没有篡改或者调换圣旨。
上面这个例子,会对以后更深入理解区块链和各种币有所帮助。
今天就先讲到这里,本来准备了好几篇文章,可是改了好几天,还是觉得应该从零基础开始跟大家聊起,米饭君并不是专家,希望和大家多多学习交流。