数字签名与数字证书
时间:2022-07-27
本文章向大家介绍数字签名与数字证书,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
一、数字签名
数字签名的主要技术是非对称密钥加密技术。 数字签名并不能保证信息在传输过程中不被截获。
1.数字签名技术的作用
- 接收方可以验证消息来源。
- 发送方不能否认发送过消息。
- 接收者不能编造或改写消息,更不能伪造签名。
2.数字签名的两种方式
- 基于第三方的加密认证。
- 公钥加密数字签名认证。
3.数字签名和验证的过程
数字签名技术是将摘要用发送者的私钥加密,与原文一起传送给接收者。接收者只有用发送者的公钥才能解密被加密的摘要,然后用Hash函数对收到的原文产生一个摘要,与解密的摘要对比,如果相同,则说明收到的信息是完整的,在传输过程中没有被修改,否则,就是被修改过,不是原信息。同时,也证明发送者发送了信息,防止了发送者的抵赖。
(1)数字签名过程
-
发送者A
使用 “摘要” 算法(如:MD5、SHA-1等)对发送信息进行摘要。 - 使用
发送者A
的私钥对消息摘要进行加密算法,加密摘要和原文一并发给接收者B
。
(2)验证签名过程
-
接收者B
接收到加密摘要和原文后,使用与发送者A
相同的摘要算法对原文再次摘要,生成新摘要。 -
接收者B
只能使用发送者A
公钥才能解密被加密的摘要,还原成原摘要。 - 两个摘要对比,一样则说明是由
A
发出,并没有经过任何修改。
(3)总结
数字签名功能有信息身份认证、信息完整性检查、信息发送不可否认,但不提供原文信息加密,不能保证对方可以收到消息,也不对接收方身份进行认证。
二、数字证书
1.X.509证书格式
在
X.509
标准中,包含在数字证书中的数据域有证书、版本号、序列号(唯一标识每一个CA
下发的证书)、算法标识、颁发者、有效期、有效起始日期、有效终止日期、使用者、使用者公钥信息、公钥算法、公钥、颁发者唯一标识、使用者唯一标识、扩展、证书签名算法、证书签名(发证机构CA对用户证书的签名)。
- Python对商品属性进行二次分类并输出多层嵌套字典
- 通过shell得到数据库中权限的脚本(r2笔记77天)
- 用Python实现PCA和MDA降维和聚类
- 通过shell解析dump生成parfile(r2笔记76天)
- Web Spider实战1——简单的爬虫实战(爬取"豆瓣读书评分9分以上榜单")
- 如何用R语言从网上读取多样格式数据
- C/C++——生成随机数
- PHP基础——PHP数组
- 使用shell抽取html数据之二(r2笔记75天)
- Python爬取链家网数据:新房楼盘价格分析
- 【编程基础】Java里面如何对字符串排序?
- 计算广告——广告定向实践
- 通过shell抓取html数据(r2笔记74天)
- 通过shell脚本分析足彩(r2笔记74天)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- centos配置mutt和msmtp实现邮件发送
- CentOS8 安装 jdk8 / java8的教程(推荐)
- Ubuntu18.04 一键升级Python所有第三方包 及安装python包的方法
- 详解centos7上elastic search安装及填坑记
- Linux利用Sysctl命令调整内核参数
- 在ubuntu16.04上创建matlab的快捷方式(实现方法)
- CentOS 7.6 Telnet服务搭建过程(Openssh升级之战 第一任务备用运输线搭建)
- Ubuntu18.04下安装MySQL(图文教程)
- 基于 ffmpeg+Webassembly 实现视频帧提取
- Ubuntu14.04 opencv2.4.8和opencv3.3.1多版本共存的实现方法
- 解决Unixbench安装报错信息的问题
- 关于安装LNMP集成包后上传图片报500错误的解决方法
- linux下SVN配置实现项目目录自动更新以及源码安装的操作方法
- linux安装redis和mysql的实例讲解
- tomcat服务器如何配置字符集为utf-8彻底解决中文乱码的问题详解