欧易OKX矿池接入教程
什么是数字签名?如何生成数字签名以及验证数字签名?
数字签名,英文为“Digital Signature”,也是一种签名,只不过传统是用笔在纸上签字,现在是用“非对称加密算法”来签名。
关于非对称加密算法,胜超反复讲了多次,是不可逆推的一种加密算法,非常安全,也非常重要!
为什么要使用数字签名呢?
由胜超前文的分享知道,非对称加密,需要两个密钥:公钥和私钥,加密和解密必须互相对应。
比如小明要把“hello”这个信息传递给小黑,小明利用小黑的公钥进行加密,得到一个密文,然后小黑收到后,必须要用自己的私钥来解密,得到明文:hello
这个过程中,由于小黑的公钥是公开的,任何人都可以用小黑的公钥来加密,并且向小黑传输信息,那么,小黑如何确定这个信息就是小明发的呢?
这个时候数字签名就派上用场了,只要小明用自己的私钥加密,小黑用自己的公钥解密,获得的哈希值和原文的哈希值一致,就可以确定是小明发来的信息!
如何生成数字签名以及验证数字签名?
签名的生成:
1、小明将信息原文进行哈希计算,得到相应的哈希值,形成摘要;
2、小明将得到的摘要用自己的私匙进行加密 ,生成签名;
3、小明将签名和原文信息一起发送给小黑,就像写信一样,信纸上是传递的信息,签名要写在信封上一起发送。
签名的验证:
1、小黑收到后,提取信息中的签名,用小明的公钥进行解密,得到信息的哈希值;
2、小黑提取原文信息,再进行哈希运算,得到另一个哈希值;
3、小黑对比两个哈希值,如果一致,则验证成功。
总结一下:
1,必须要用公钥来加密原文,而不是私钥,一旦使用私钥加密,那就只能使用公钥来解密,而公钥都是公开的,这样加密就失去了意义。
2,对于数字签名,要用私钥来加密,加密的是密文的哈希值,即使泄露,这个哈希值也无法破解,只为校验身份,所以数字签名要用私钥来加密。