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

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

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

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

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进行比较,验证原文是否被修改。如果二者相等,说明数据没有被篡改,是保密传输的,签名是真实的;否则拒绝该签名。这样就做到了敏感信息在数字签名的传输中不被篡改,未经认证和授权的人,看不见原数据,起到了在数字签名传输中对敏感数据的保密作用。

数字签名的全过程签名与验证相关推荐

  1. 数字签名(代码签名)流程和数字签名的验证

    数字签名(代码签名)流程 数字签名(代码签名)流程 Authenticode : 这里翻译为数字认证代码.  code sign : 字面的翻译为代码签名,但是通常的我们称为数字签名,以下的文中均称为 ...

  2. 数字签名的签名与验证

    数字签名的签名与验证 1.数字签名的签名过程 数字签名的操作过程需要有发方的签名数字证书的私钥及其验证公钥. 具体过程如下:首先对代发文件做哈希算法形成数字摘要,在对数字摘要用签名私钥做非对称加密形成 ...

  3. (0078)iOS开发之支付宝集成:客户端签名与验证

    请各位在看此教程之前请确保你的工程已经集成官方SDK成功,并且没有报错.本教程主要解决签名和验证的问题. 首先说一下简单支付流程: 你提交等待支付的订单信息给支付宝,支付宝返回订单支付结果给你(这里暂 ...

  4. 【密码学原理】数字签名(ElGamal签名,Schnorr签名,椭圆曲线签名,RSA-PSS签名)

    数字签名是公钥密码学发展过程中最重要的概念之一,产生和使用数字签名过程的一般模型如图所示 消息认证可以保护消息交换双方不受第三方的攻击,但是不能处理通信双方自身发生的攻击.例如对下图中的某种方式进行攻 ...

  5. 数字签名,盲签名,环签名,群签名

    数字签名 类似在纸质合同上签名确认合同内容,数字签名用于证实某数字内容的完整性(integrity)和来源(或不可抵赖,non-repudiation). 实际应用中,由于直接对原消息进行签名有安全性 ...

  6. 编写ATL工程实现ActiveX控件调用cryptoAPI接口(一)------------签名与验证

    注:下面的代码中用了Map,Base64,log,Result等都为自定义类型,太长就不一一贴出. [cpp]  view plain  copy  print ? /* * * * 文件名称:Sig ...

  7. 区块链100讲:能够证明你是你的数字签名和多重签名

    随着区块链相关技术的创新和突破,很多有形或无形资产都将实现去中心化,数字资产将无处不在.要保护数字出版物版权,实现去中心化,解决业界多年来版权保护不力的难题.无论数字资产,还是数字出版版权,都是有明确 ...

  8. iOS使用Security.framework进行RSA 加密解密签名和验证签名

    iOS 上 Security.framework为我们提供了安全方面相关的api: Security框架提供的RSA在iOS上使用的一些小结 支持的RSA keySize 大小有:512,768,10 ...

  9. 波卡链Substrate (7)Babe协议四“出块签名和验证”

    1. 步骤 step1. slot leader更新本地链C使用新块,并发送新块B发送给其他节点 step2. 签名 slk:当前槽 H(l-1):sLk前一个区块的哈希 d:VRF输出 pi:val ...

  10. [网络安全自学篇] 五十七.PE文件逆向之什么是数字签名及Signtool签名工具详解(一)

    本系列虽然叫"网络安全自学篇",但由于系统安全.软件安全与网络安全息息相关,作者同样会分享一些系统安全案例及基础工具用法,也是记录自己的成长史,希望大家喜欢,一起进步.前文讲解了i ...

最新文章

  1. 161026、更快速将你的页面展示给用户[前端优化篇]
  2. mysql修改编码格式6_修改编码格式MySQL
  3. imwrite()函数
  4. java如何对一个表达式开根号_作为一个零基础的新手,如何系统的自学Java和JavaEE开发技术?...
  5. csv与json互转_CSV文件转JSON
  6. 牛客网--2019校招--瞌睡
  7. 全网最细Docker安装Minio,填满最新版大坑(强烈推荐收藏)
  8. virtualbox vdi复制及移动-转
  9. ASP.NET - 一般处理程序获取session值
  10. Java 连接sql server
  11. Stroke:利用人类遗传学理解缺血性卒中预后的机制
  12. AutoCAD 快捷键
  13. hadoop is not in the sudoers file. This incident will be reported.问题解决
  14. 手机控制电脑之手机端模拟鼠标移动
  15. [Linux 基础] -- Linux input 子系统要点总结
  16. Math.sin() 与 Math.cos() 用法
  17. DataStage 简介
  18. Django项目 no signature found for builtin错误原因
  19. 飘了,英特尔2年内要发布高效芯片超过苹果M1
  20. 如何把IP-GUARD发布到公网IP来管理全国分公司的终端

热门文章

  1. 常用计算机检索算符,计算机信息检索过程中常用的检索表达式
  2. 数据类型--Number类型
  3. 矛与盾:黑客攻防命令大曝光
  4. 倾斜摄影在高速道路勘测中的应用-案例
  5. HTML .CSS实现商品详情(detail)
  6. yolov 论文发表在什么期刊上_joe期刊是什么期刊_joe是什么意思_joe牌子
  7. html单标签的语法并举例,HTML简介及举例
  8. SPSSAU入门---浅谈问卷设计到数据分析之间的联系
  9. 感觉现在的技术圈越来越像娱乐圈了
  10. 高仿网易评论列表效果之数据准备