区块链技术与密码学学习之Hash算法解读
Posted 区块链兄弟
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了区块链技术与密码学学习之Hash算法解读相关的知识,希望对你有一定的参考价值。
▲点击蓝字,轻松关注
文章来源:博客园
原文链接:http://t.cn/RnPqa1P
著权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
本文约1400字+,阅读(观看)需要9分钟
区块链其实是一种点对点的分布式存储系统,它不依赖于某个节点,所有的节点上都有所有的账本信息(理论上)。下面是比较准确的描述:
区块链能够保证用户的数据安全,那么它的基础就是密码学技术。
密码学技术涉及太广了,包括 hash算法与摘要、加密算法、数字签名和证书、PKI体系、Merkle树、同态加密等,以及如何使用这些技术实现信息的机密性、完整性、认证性和不可抵赖性。
首先是Hash算法:
定义:Hash(哈希或散列)算法是信息技术领域非常基础也非常重要的技术。它能任意长度的二进制值(明文)映射为较短的固定长度的二进制值(Hash值),并且不同的明文很难映射为相同的Hash值。
例如计算一段话“hello blockchain world, this is yeasy@github”的 MD5 hash值为89242549883a2ef85dc81b90fb606046。
注意,这里提到的是MD5 Hash,意思是用MD5算法实现的Hash算法,所以说Hash算法是一类算法,而不是一种算法,一个好的Hash算法要求:
正向快速:给定明文和hash算法,在有限时间和有限资源内能计算出hash值。
逆向困难:给定(若干)hash值,在有限时间内很难(基本不可能)逆推出明文。
输入敏感:原始输入信息修改一点信息,产生的hash值看起来应该都有很大不同。
冲突避免:很难找到两段内容不同的明文,使得它们的hash值一致(发生冲突)。
目前流行的Hash算法包括:MD5、SHA-1和SHA-2等。
MD5(RFC1321)是Rivest于1991年对MD4的改进版本。它对输入仍以512位分组,其输出是128位。MD5比MD4复杂,并且计算速度要慢一点,更安全一些。MD5已被证明不具备“强抗碰撞性”。
SHA(SecureHashAlgorithm)是一个Hash函数族,由NIST(National Institute of Standardsand Technology)于1993年发布第一个算法。目前知名的SHA-1在1995年面世,它的输出为长度160位的hash值,因此抗穷举性更好。SHA-1设计时基于和MD4相同原理,并且模仿了该算法。SHA-1已被证明不具备“强抗碰撞性”。
为了提高安全性,NIST还设计出了SHA-224、SHA-256、SHA-384,和SHA-512算法(统称为SHA-2),跟SHA-1算法原理类似。SHA-3相关算法也已被提出。
目前,一般认为MD5和SHA1已经不够安全,推荐至少使用SHA2-256算法。
一般的,Hash算法都是算力敏感型,意味着计算资源是瓶颈,主频越高的CPU进行Hash的速度也越快。也有一些Hash算法不是算力敏感的,例如scrypt,需要大量的内存资源,节点不能通过简单的增加更多CPU来获得hash性能的提升。
用途:数字摘要,数字摘要是对数字内容进行Hash运算,获取唯一的摘要值来指代原始数字内容。数字摘要是解决确保内容没被篡改过的问题(利用Hash函数的抗碰撞性特点)。数字摘要是Hash算法最重要的一个用途。在网络上下载软件或文件时,往往同时会提供一个数字摘要值,用户下载下来原始文件可以自行进行计算,并同提供的摘要值进行比对,以确保内容没有被修改过。
文章发布只为分享区块链技术内容,版权归原作者所有,观点仅代表作者本人,绝不代表区块链兄弟赞同其观点或证实其描述。
猜猜你喜欢
点击“阅读原文”参与区块链问题讨论
以上是关于区块链技术与密码学学习之Hash算法解读的主要内容,如果未能解决你的问题,请参考以下文章