首页 > 代码库 > 数字签名

数字签名

数字签名的目的:

完整性            确保数据在传输过程中没有被篡改

身份认证        确保你收到的数据是对应的人员发送过来的

不可否认性    发送方不能否认签名数据

 

数字签名要素:

原文

摘要

证书

 

哈希算法:

md2、md5(128位散列值)、国密sm3(256位)

主要作用  将原来比较大的数据散列成较小的值

Hash,一般翻译做"散列",也有直接音译为"哈希"的,就是把任意长度的输入(又叫做预映射, pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值。

这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,而不可能从散列值来唯一确定输入值(不能从散列值推算出原文)。

 

签名数据包:

attached  版本、哈希算法、原文、摘要、证书、CRL

detached  版本、哈希算法、摘要、证书     (detached中不包括原文信息,原文信息需要通过其他方式发送给验签方)

raw裸签   摘要   (裸签中不包括原文和证书信息)

 

签名验签过程:

技术分享

1.首先client端利用哈希算法散列原文数据

2.然后利用自己的私钥将散列值加密

3.client端将证书、原文、散列值发送给server端

4.server利用证书中的公钥解密加密数据,得到散列值

5.然后利用同样的哈希算法将原文散列,对比两个散列值是否相同

数字信封的目的:

机密性  确保原文在加密后无法破解

解决了单独使用对称算法或非对称算法加密的缺点

 

数字信封流程:

技术分享

A先用由计算机随机生成的一组一次使用的对称密钥会话密钥(Session Key加密信息原文,形成密文,然后B的公钥对会话密钥进行加密处理,并将加密的会话密钥附在密文后一起发送给BB在收到密文和加密的会话密文后,先用自己的私钥对加密的会话密钥解密,获得会话密钥,然后再用会话密钥解密密文,最终获得信息原文。

数字签名