经常听已婚的人说,结婚前,一定要看看对方家庭,了解他的家人,只有这样才能更清楚一个人的性格养成,甚至预见二十年后你们的婚姻,因为对方父母的样子有时就是你们婚姻的样子。当然,在这里不是谈论婚姻,而是讨论区块链,它就如同婚姻一样,我们要想读懂就要了解它的生长环境、成长经历,一直追溯到它的根儿,才能真正弄明白它是怎么回事儿。
区块链的生长环境中有很多生僻的词汇,像哈希、算力、挖矿等等,我们先把这些词汇逐一研究透彻,然后再来学习区块链,会更容易理解。今天我们先聊聊哈希,区块链中涉及到密码学的内容与哈希有关,它高深莫测,让人望而生畏,但实际上我们不需要知道哈希怎么运作,只需要知道它的原理即可。
哈希算法是密码学的运算方法之一,也叫hash,它其实没听起来那么神秘,就像我们上高中时候学的函数,或者Excel表格中用到的函数公式,比如求和函数、假设函数等,只不过它的名字叫做哈希函数,运算规则上要更复杂一些。它的运算目的是为了找到元素的存储位置,比如你有一把金库的钥匙,放到银行的密码箱里,那么,放到哪家银行、哪个仓库、第几排、第几列,需要锁定位置才能找到金库钥匙,而哈希要做的就是帮你记录下来这一长串的地址位置,并且保证别人找不到。换句话说,哈希函数实际上就是通过运算帮我们创建在区块链领域的银行密码,这个密码不是自己设定的,而是计算机通过哈希函数生成的。
我们要想查询账户余额,可以通过输入密码的方式查找,那么,计算机是怎么帮我们找到的呢?我们再回到计算机领域里的最小单位——数据来说说,数据以二进制信息单元0,1的形式表示,它能输入到计算机中,并被计算机处理。当数据用不同的方式组织起来的时候,就形成了数据结构,它是数据的集合体,举个例子,最简单的数据结构就像一根线上穿了一排珠子,珠子和珠子之间都是首尾相连的,珠子有圆形、有方形等,要想找到其中一颗珠子,需要进行比较,看看哪个是圆形的,然后锁定这颗珠子的存储位置。那么,哈希函数不是这样,它是在存储位置和关键字之间建立了一种关系,这种关系通过函数的公式来体现,比如Y=1+X,要想找到Y,用这个公式就可以了,X就是你的密码。
但这里有个问题,计算机生成的密码到底够不够安全,这也是使用哈希函数的意义所在,它的加密功能有以下3个特点:
A.不同输入必须产生不同输出,如果不同输入可能有同样的输出,这个密码就不够安全;
B. Y= 1+X中,只能通过X得出Y,不能通过Y得出X;
C. Y= 1+X中,如果想通过Y得到X,那就只能不断举例、尝试、试错,这是唯一的办法,这意味着可能要试上猴年马月也不一定试出结果来。
之前市场上有过的一些哈希算法,像MD5、SHA-1 (这些字母是哈希算法的名称而已,不要一看到字母就头大,实际上哈希算法有很多,像比特币的算法是 SHA-256)已被验证不具备以上几点或其中一点的安全加密特性,已被慢慢弃用。
实际上,哈希要实现的效果就是,从结果追溯不回原始数据,这就需要很强大的哈希算法,同时由于加密哈希函数涉及的节点非常多较多,一旦输入遭遇一点点的改动,输出的结果就会失之毫厘,差以千里,这样便能识别出数据被篡改。
好了,以上就是我们认为神秘莫测的哈希,原来它不是男神,而是一个忠于职守的老实人。
网友评论