美文网首页程序员@产品区块链研习社
【磨刀】1#如何在互联网编号你的信息?—哈希算法

【磨刀】1#如何在互联网编号你的信息?—哈希算法

作者: 币记本 | 来源:发表于2018-03-19 08:32 被阅读44次
    images.jpg

    “我是007不出局的5413号战友”—这是我用来跟007社群其他成员打招呼的标准语句。其他成员听到5413这个编号就可以确定我的身份,识别到我就是组织的一员。007目前有6000多位成员,如果按照发展目标,未来在全球可能会扩展到100000人。这样的一个社群,只要用一套0~100000的数字就可以完成编号。
    如果扩展到更大的数量级呢?比如说全中国的人口。我猜你马上就能说出答案:身份证!没错,全国人民的身份证都用一串18位的数字证明自己,并且用来坐火车、坐飞机、还有开房。
    如果数量级再扩大一些呢?比如你在地球的坐标。北京天安门的坐标是北纬39°54′27″,东经116°23′17″,纽约的坐标是北纬40°43′0″,西经74°0′0″。利用经纬度的划分就可以把地球表面任意一个点精确的进行定位。
    如果,数量级进一步扩大呢?比如互联网上的文件数量,全宇宙的星星数量,甚至是全宇宙的原子数量。是用7位的数字,18位的数字还是字母数字的组合呢?因为数量级过于庞大而且如果按照顺序编码的方法耗费的时间需要以万年为单位计算,所以不能在使用传统的这些编码方法。
    那什么样的方法能解决效率的问题呢?那就是哈希算法。

    1、定义

    维基百科:散列函数(或散列算法,又称哈希函数,英语:Hash Function)是一种从任何一种数据中创建小的数字“指纹”的方法。

    在物理的世界,你手里的文件是有形的,由纸张和石墨等要素组成,因此这些文件的唯一性是比较好保证的。然而在互联网世界里,文件、图像、影音甚至一个文字都是由0或1及其不同的排列方式组成的二进制文件。

    美女.jpg
    你看到的这个妹纸,在互联网的世界里是这样的:01010101……
    是不是毁三观?是不是毫无美感可言?但是这就是在互联网世界里所有文件的存在方式。我们利用哈希算法把这张美女图片生成哈希值7f05818e9acfd3d7a40d77ff807f68781973902fee2670fdf1ef102cde0876d7
    (一个可以把文件自动生成哈希值的网:http://www.atool.org/file_hash.ph
    这个哈希值代表的就是这个妹纸的基因,是可以用来准确识别她的信息。哈希算法是一堆数学家弄出来的复杂概念,你不用去思考哈希算法的原理和实现机制,简单的把他理解为一种魔法就好。魔法可以让你看到这个美女的样子就可以同时看到他的基因。

    2、分类

    图片来自维基百科


    微信图片_20180318145635.png

    从理论上来说,哈希值是可能会重号的,只是重号的概率小到可以忽略。这里所说的重号在哈希算法世界里的名字是碰撞。什么叫碰撞?拿上图的美女举例,如果她有一个同卵的双胞胎妹妹,那么两个人的DNA是完全一样的,利用哈希魔法变出来的哈希值也完全一样,这种情况在哈希算法中就是碰撞。发生碰撞的后果是什么呢?如果你持有比特币的私钥被不怀好意的人利用暴力破解的方法碰撞出来(这只在理论上存在,在实际中完全不可能,会在以后的文章中说明),那他就可以把你的比特币转走,侵占本属于你的财产。
    哈希算法有很多种,各自的应用范围不同而已,有的算法适合于小规模的数据基础(例如MD2),有的算法适合于中等规模的数据基础(例如MD5),有些算法适合于海量的数据基础(例如比特币采用的SHA-256)。算法之间并没有好坏的区别,而只是使用范围和实现目标的不同。适用范围越大的算法应该保证哈希算法发生碰撞的概率越小。

    3、特征

    -同一文件哈希值相同
    同一文件因哈希值的唯一性而具有唯一性。也就是说你通过复制粘贴是无法把A文件变成B文件。
    -不能逆向推导
    美女摆在你面前,你利用哈希算法的魔法可以看到她的DNA,但是你却不能因为只看到她的DNA就去想象出一个美女的样子。因为全世界的人在DNA层面的差异并不大,你看到一个DNA,其实他可以是世界上的任何一个人。
    -计算耗时极短
    魔法的实现时间只是一个瞬间,从美女变成DNA可能只是一眨眼的时间。从原理上来说,一部4K全高清的40G电影和一个5kb大小的记事本文件的哈希计算难度几乎一样,都可以在一个极短的时间内得到结果。
    -长度决定难度
    不同的哈希算法计算出来的哈希值的确有长短之分,越长的哈希值发生碰撞的几率越小,因为越长的哈希值需要的哈希计算方法越难。但并不是越长越好,就像前文所说,不同的数据基础使用不同的哈希算法就可以。

    4、区块链世界里的哈希算法

    总有人说比特币并没有重大的科技创新,它只不过是在现在的技术之上进行组合和加工。关于这点我并不同意,活字印刷术不是在雕版印刷技术上演化而来吗?地铁的挖掘技术不是在原火车开隧道的技术上演化而来吗?创新不仅仅是指某一个重大技术的单点突破,也包括把本不相关的领域技术进行组合和加工生成新的技术。哈希算法给互联网上的所有文件都打上独一无二的标签,因为这独一无二的标签我们才能通过Google搜到我们想要的东西,同样也因为哈希算法在比特币网络的应用,你的私钥才得以保护,你的比特币等数字货币资产才得以真正属于你而不仅仅是一串代码。按照汤强老师的说法:即使哈希算法乍看起来毫不起眼,无非做出了一串奇怪的字符,但它却是比特世界里的板砖,能搭出高楼大厦,能让比特世界更有序。即使离你再远的信息,在哈希算法的帮助下,都可以让你触手可及。
    我是吴强,一个搞事情的产品经理,我在期待你的连接,微信:wuqiang183

    公号引导底图PPT(小号微信).jpg

    参考资料:
    1、《精通比特币(第二版)》
    2、汤强——《如何给你的文件设定独一无二的编号?》
    3、维基百科:哈希算法

    相关文章

      网友评论

        本文标题:【磨刀】1#如何在互联网编号你的信息?—哈希算法

        本文链接:https://www.haomeiwen.com/subject/jykeqftx.html