深色模式
关于数字签名
什么是数字签名
从编程的角度来看,数字签名,就是一个固定长度的二进制数据。
它的长度由签名算法决定,它的内容可以通过base64保存为文本。
网上有许多对数字签名这个概念比较抽象的解释,比如:保证数据完整性,不可篡改,鉴别真伪等,这些都是在描述数字签名的作用。
数字签名的基本过程
数据的发送者首先要准备好私钥key
与公钥pub_key
,对于一份数据data
:
- 计算摘要:使用摘要算法计算
data
的摘要hash
- 签名:使用私钥
key
对hash
进行加密,得到签名sign
- 发送数据:发送原始数据
data
、签名sign
,以及公钥pub_key
- 验证签名:数据接收者先对数据
data
使用与前面相同的摘要算法计算出摘要hash1
,再使用公钥pub_key
对签名sign
进行解密,得到摘要hash2
,如果两个摘要hash1
与hash2
相同,则说明签名是有效的。
问题
数字签名可信任的关键,在于跟随数据一起发送的公钥pub_key
必须是合法的,因为伪造者在伪造数据的时候可以同时伪造一份公钥,这样就能成功欺骗数据的接收者。
为了确保公钥pub_key
的合法性,就需要用到数字证书了。