数字签名的过程


  

        数字签名的全过程分两大部分,即签名与验证。


       一侧为签名,一侧为验证过程。

       发方将原文用哈希算法求得数字摘要,用签名私钥对数字摘要加密得数字签名,发方将原文与数字签名一起发送给接受方;

      收方验证签名,即用发方公钥解密数字签名,得出数字摘要;收方将原文采用同样哈希算法又得一新的数字摘要,将两个数字摘要进行比较,如果二者匹配,说明经数字签名的电子文件传输成功。

  

     1、数字签名的签名过程   

    数字签名的操作过程需要有发方的签名数字证书的私钥及其验证公钥。      具体过程如下:首先是生成被签名的电子文件(《电子签名法》中称数据电文),然后对电子文件用哈希算法做数字摘要,再对数字摘要用签名私钥做非对称加密,即做数字签名;之后是将以上的签名和电子文件原文以及签名证书的公钥加在一起进行封装,形成签名结果发送给收方,待收方验证。 

  

     2、数字签名的验证过程   

    接收方收到发方的签名结果后进行签名验证,其具体操作过程如下:      接收方收到数字签名的结果,其中包括数字签名、电子原文和发方公钥,即待验证的数据。接收方进行签名验证。验证过程是:接收方首先用发方公钥解密数字签名,导出数字摘要,并对电子文件原文做同样哈希算法得出一个新的数字摘要,将两个摘要的哈希值进行结果比较,相同签名得到验证,否则无效。这就做到了《电子签名法》中所要求的对签名不能改动,对签署的内容和形式也不能改动的要求。  


    3、数字签名的实现方法   
    基本原理是将原文用对称密钥加密传输,而将对称密钥用收方公钥加密发送给对方。收方收到电子信封,用自己的私钥解密信封,取出对称密钥解密得原文。





其详细过程如下:  

  (1)发方A将原文信息进行哈希运算,得一哈希值即数字摘要MD;  

  (2)发方A用自己的私钥PVA,采用非对称RSA算法,对数字摘要MD进行加密,即得数字签名DS;  

  (3)发方A用对称算法DES的对称密钥SK对原文信息、数字签名SD及发方A证书的公钥PBA采用对称算法加密,得加密信息E;  
  (4)发方用收方B的公钥PBB,采用RSA算法对对称密钥SK加密,形成数字信封DE,就好像将对称密钥SK装到了一个用收方公钥加密的信封里;    (5)发方A将加密信息E和数字信封DE一起发送给收方B;  
  (6)收方B接受到数字信封DE后,首先用自己的私钥PVB解密数字信封,取出对称密钥SK;  
  (7)收方B用对称密钥SK通过DES算法解密加密信息E,还原出原文信息、数字签名SD及发方A证书的公钥PBA;  

  (8)收方B验证数字签名,先用发方A的公钥解密数字签名得数字摘要MD;    (9)收方B同时将原文信息用同样的哈希运算,求得一个新的数字摘要MD;    (10)将两个数字摘要MD和MD进行比较,验证原文是否被修改。如果二者相等,说明数据没有被篡改,是保密传输的,签名是真实的;否则拒绝该签名。这样就做到了敏感信息在数字签名的传输中不被篡改,未经认证和授权的人,看不见原数据,起到了在数字签名传输中对敏感数据的保密作用。



  • 11
    点赞
  • 64
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
数字签名过程: (1) 发方A用自己的私钥PVA,采用非对称RSA算法,将原文信息进行哈希(hash)运算,并对hash值进行加密,即得数字签名DS;(RSACryptoServiceProvider.SignData()) (3) 发方A用对称算法AES的对称密钥SK对原文信息、数字签名SD及发方A证书的公钥PBA采用对称算法加密,得加密信息E;(Rijndael.CreateEncryptor()) (4) 发方用收方B的公钥PBB,采用RSA算法对对称密钥SK加密,形成数字信封DE,就好像将对称密钥SK装到了一个用收方公钥加密的信封里;(RSACryptoServiceProvider.Encrypt()) (5) 发方A将加密信息E和数字信封DE一起发送给收方B; (6) 收方B接受到数字信封DE后,首先用自己的私钥PVB解密数字信封,取出对称密钥SK;(RSACryptoServiceProvider.Decrypt()) (7) 收方B用对称密钥SK通过AES算法解密加密信息E,还原出原文信息、数字签名SD及发方A证书的公钥PBA;(Rijndael.CreateDecryptor()) (8) 收方B验证数字签名,先用发方A的公钥解密数字签名得数字摘要MD; (9) 收方B同时将原文信息用同样的哈希运算,求得一个新的数字摘要MD`;(RSACryptoServiceProvider.VerifyData()) (10)将两个数字摘要MD和MD`进行比较,验证原文是否被修改。如果二者相等,说明数据没有被篡改,是保密传输的,签名是真实的;否则拒绝该签名。 程序用法: “生成证书”按钮,生成发送方、接收方对应的公钥证书和私钥证书。 “签名”按钮,使用发送方私钥、发送方公钥、接收方公钥对文本框中的文本进行数字签名。得到签名后的文本。 “还原验证”按钮,使用接收方私钥将签名后的文本还原,并进行验证。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值