雅乐网

计算机技术、学习成长

计算机 » 认识区块链(1)——哈希算法

认识区块链(1)——哈希算法

大家好,这一系列文章小乐将和大家一起从密码学原理开始,逐步了解区块链技术~

区块链中所说的哈希指的是应用于密码学中的哈希函数(Cryptographic hash function),它和数据结构中的哈希表是不一样的。从数学的角度看,哈希函数是一种单向的映射,它可以把任意长度的信息(消息,message)转换为固定长度的二进制串(摘要,digest)。常用的哈希算法有MD5, SHA-256等。

有许多网站可以在线计算哈希值,大家可以试一下:

消息”yalewoo”经过SHA-256算法计算的哈希值是

c7c5155cdea0509cb7ba4d52b5eb9b889e64aefa2e613f77a115777f112721e5

可以看到,SHA-256算法的结果是256位二进制。这个结果和原始的消息非常不一样,通过这一串哈希函数我们不能获得任何关于原始消息的信息。这也是密码学中哈希函数的一个重要特点,也叫作hiding,是说原始消息经过哈希计算后就被隐藏了,哈希值的计算是不可逆的。假设我们有了这个哈希值c7c5155cdea0509cb7ba4d52b5eb9b889e64aefa2e613f77a115777f112721e5,想要知道原始的消息是什么,唯一的办法是暴力遍历所有的消息。

我们再来计算一下”Yalewoo”的哈希值,得到

ae6d06b1afb3f75bc0994d05ee925e0189015c5324db3034e5ac3783bf5f247e

可以发现原始消息只有一个字母不同,但得到的哈希函数却是几乎每一位都不同的。

那么有没有两个消息的哈希值是相同的呢?我们知道SHA-256的结果有256位二进制,那么结果空间大小就是2^256,如果我们尝试2^256+1个不同得到消息,肯定会得到两个有相同哈希值的消息。但是,2^256实在是太大了,目前人们还没有找到两个具有相同SHA-256值的消息。

这也是密码学中哈希函数的重要特性,叫做碰撞抵抗性(Collision resistance)。也就是说,不能构造另外一个具有相同哈希值的消息。其实,一旦有人发现两个消息的哈希值相同,我们就说这种哈希算法被破解了,也就是不安全了。之前很火热的MD5算法就被我国的王小云院士破解了,她能快速构造一个M2使得MD5(M1)=MD5(M2). 2007年,Google构造出了拥有相同SHA-1哈希值的两个不同的pdf文件。目前SHA-256算法还是安全的,区块链中挖矿时用的就是这种算法。

密码学中的哈希函数还有另外一个特点:Puzzle friendly,也就是Difficult to solve, easy to verify。也就是说很难构造一个消息它的哈希值满足一定的要求,但是很容易验证一个消息是不是满足条件。这个特点非常适合区块链中的工作量证明。

下次,小乐会和大家分享密码学中另外一个伟大的发明:非对称加密。

如果文章对你有帮助,欢迎点赞或打赏(金额不限)。你的打赏将全部用于支付网站服务器费用和提高网站文章质量,谢谢支持。

版权声明:

本文由 原创,商业转载请联系作者获得授权。
非商业转载请注明作者 雅乐网 ,并附带本文链接:
http://www.yalewoo.com/blockchain_1_hash.html

上一篇:

下一篇:

我要评论

验证码*: 6 + 5 =