区块链知识储备-哈希算法和数字签名

Posted DaMing

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了区块链知识储备-哈希算法和数字签名相关的知识,希望对你有一定的参考价值。


区块链科普第2篇


本文白话两个概念:哈希算法和数字签名。


哈希算法


什么是哈希算法?

哈希算法就是将任何数据文件通过hash变换为一个固定长度相对较短的数据。


给个直观展示


我输了一段乱七八糟的一段文字,使用不同的哈希算法,得到"结果",这个"结果"是叫做哈希值。


它有什么特点呢?

这个值的长度是固定长度,计算机文件在计算机存储都是从0和1构成,一个文件可能就有无数个0和1构成,使用哈希算法后,大大缩短了长度。


这个值是独一无二的,哪怕你修改一个字符,这个值就会变成另外一串东西。


不可逆推,你看到这么一串乱七八糟的玩意,有办法推出原文么。


计算快,无论文件多大,哪怕是个10多G的电影,你眨下眼,就给算出来了。


仔细的同学,刚才会从上面的图看到md5、sha1这些玩意,这些就是哈希算法,算法的精妙在于这个值对于不同的数据还是不一样的,如果不同的数据生成的hash值一样,就是有名的"hash碰撞",不过这种概率极低,作为入门,先不做介绍。


数字签名


在  我们举了个非对称加密的例子, 小明给小红写信,内容虽然加密了,但是小红怎么知道小明写的,而不是小王、小李写的。这时候数据签名就派上用场了。


数字签名是什么?

简单言之,只有信息发送者才能产生的字符串,也是一串乱七八糟的东西:比如 WTU3Y3BxelY2YXR


数字签名是怎么产生的?

1.哈希密文,得到一个哈希值 

2.然后用发送者的私钥加密这个哈希值


那具体怎么验证呢?

我还是举个例子,小明准备给小红发信息"周天出去约会呀?",但没法明发,小红老妈看小红很紧。


1.防止小红老妈看破信息,小明先用非对称加密:小红的公钥对密文"周天出去约会呀"加密得到加密信息"ABC"。


2.小明想怎么证明是小明自己发的呢,而不是我的情敌小王发的,数字签名登场,首先小明把密文"周天出去约会呀"哈希得到一个哈希值:"666",然后在用自己的私钥加密这个哈希值:"666",得到数字签名:"DEF"


3.小明把加密信息"ABC"和数字签名"DEF"就发给小红了


4.小红接到这两个信息后,先用自己的私钥解密加密信息"ABC"得到"周天出去约会呀"的信息


5.小红用哈希算法对加密信息"周天出去约会呀"进行哈希,得出哈希值"666",那么谁是"666"呢?然后小红用小王的公钥解密数字签名"DEF",得到解密结果"777",哦,不是小王,然后用小明的公钥解密数字签名"DEF",得到是"666",喔,是小明约我,^ ^。


敲黑板

公钥和私钥互为加解密工具,可以“公钥加密,私钥解密”,也可以“私钥加密、公钥解密”,无法"公钥加密,原公钥解密"、"私钥加密,原私钥解密"。


为什么不用私钥加密原文?因为如果用私钥加密,那就只能使用公钥解密,而公钥都是公开的,这样就使加密失去意义。数字签名用私钥加密的是密文的哈希值,解密后也只是哈希值,作为校验身份挺好用的。


哈哈,所以说再次体现了私钥的重要性,自己发出的信息也无法抵赖,说谎都没法说。哈希函数和电子签名都是区块链的基本技术知识,如果有点理解不了,多看看文中那个例子,回味几遍。希望有所收获。

END


以上是关于区块链知识储备-哈希算法和数字签名的主要内容,如果未能解决你的问题,请参考以下文章

网友投稿:入门区块链,从数字签名和哈希算法开始

区块链知识点索引

区块链知识储备-非对称加密

区块链知识点索引

区块链知识堂第一堂:哈希算法

区块链知识| 哈希算法