数字签名介绍

        数字签名的意义:防止抵赖、保证信息没有被更改过。

        

假如A公司要发一份合同给B公司,过程如下:

        1 A公司使用一个单向散列函数算法(比如使用MD5)对合同计算一个摘要,得到摘要S(A),再使用A的私钥对摘要S(A)加密得到PS(A)(即为合同的签名),此时A将合同、摘要S(A)、数字签名PS(A)一起发送给B。

        2 B收到上述信息后如何判断合同是否就是A发送的呢?

        B也使用一个单向散列函数算法(比如使用MD5)对合同计算得到一个摘要S(B),再用A的公钥解密PS(A)得到PS(B),如果S(B)与PS(B)相同则判定合同没有被改过,如果不相同,则合同被改过。

        以上过程A无法抵赖合同是他发送的,因为根据非对称加密的性质,B能用A的公钥解密PS(A),则说明签名是属于A的,只有A才有私钥,别人无法伪造,所以合同肯定是A发送的。

        以上过程中的安全机制依赖于A的公钥是否是可信的,如果公钥不可信则后面的安全都无法保证,此时B拿到A发过来的合同时,首先要验证的是A的公钥的可信度,如果证书验证不通过,则说明A不可信;若验证通过才能进行后面的签名验证。

        同时由摘要算法的性质,我们指定如果S(B)与PS(B)相同则合同没有被更改过,也就是保证了信息的完整性。

        那想一想如果合同被更改过会发生什么呢?假如只有合同被更改,则在对比摘要的时候S(B)与PS(B)会不相同,则验证不通过;那假如连摘要S(A),数字签名PS(A)也一起更改呢?要修改数字签名,那Hacker只能连证书一起也替换了,那么在B进行证书验证的时候将验证失败,也不会通过。所以也就能保证信息的完整性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/229033.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

信息学奥赛一本通1085:球弹跳高度的计算详解+代码

目录 题目 【题目描述】 【输入】 【输出】 【输入样例】 【输出样例】 详解 代码 题目链接:信息学奥赛一本通1085:球弹跳高度的计算 题目 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 100308 通过数: 55941 【题目描述】 一球…

Element 介绍

Element 介绍 Vue 快速入门 Vue 常见组件 表格 分页组件 其他自己去看吧 链接: 其他组件

设计模式——装饰模式(结构型)

引言 装饰模式是一种结构型设计模式, 允许你通过将对象放入包含行为的特殊封装对象中来为原对象绑定新的行为。 假设你正在开发一个提供通知功能的库, 其他程序可使用它向用户发送关于重要事件的通知。 库的最初版本基于 通知器Notifier类,…

C语言——谁考了第k名(编程题目)

目录 一、题目描述: 二、输入格式: 三、输出格式: 四、输出样例: 五、输出样例: 六、代码呈现: 一、题目描述: 在一次考试中,每个学生的成绩都不相同,现知道了每个…

Oracle RAC环境下redo log 文件的扩容

环境: 有一个2节点RAC每一个节点2个logfile group每一个group含2个member每一个member的大小为200M 目标:将每一个member的大小有200M扩充到1G。 先来看下redo log的配置: SQL> select * from v$log;GROUP# THREAD# SEQUENCE# …

JUC并发编程 06——Synchronized与锁升级

一.Java对象内存布局和对象头 在HotSpot虚拟机里,对象在堆内存中的存储布局可以划分为三个部分:对象头(Header) 、实例数据 (Instance Data) 和 对文填充 (Padding)。 对象内部结构分为:对象头、实例数据、对齐填充(保证8个字节的…

单机多卡训练-DDP

DDP原理: 为什么快? DDP通过Ring-Reduce(梯度合并)的数据交换方法提高了通讯效率,并通过启动多个进程的方式减轻Python GIL的限制,从而提高训练速度。 神经网络中的并行有以下三种形式: Data…

软件设计师——计算机组成原理(三)

📑前言 本文主要是【计算机组成原理】——软件设计师——计算机组成原理的文章,如果有什么需要改进的地方还请大佬指出⛺️ 🎬作者简介:大家好,我是听风与他🥇 ☁️博客首页:CSDN主页听风与他 …

runCatching异常捕获onSuccess/onFailure返回函数,Kotlin

runCatching异常捕获onSuccess/onFailure返回函数,Kotlin fun test(a: Int, b: Int) {runCatching {a / b}.onSuccess {println("onSuccess: $it")return ok(it)}.onFailure {println("onFailure: $it")return fail(it)} }fun ok(o: Any) {prin…

echarts地图的常见用法:基本使用、区域颜色分级、水波动画、区域轮播、给地图添加背景图片和图标、3d地图、飞线图

前言 最近几天用echarts做中国地图,就把以前写的demo:在vue中实现中国地图 拿来用,结果到项目里直接报错了,后来发现是因为版本的问题,没办法只能从头进行踩坑了。以下内容基于vue3 和 echarts 5.32 基本使用 获取地…

Linux环境下HTTP请求的代码详解与实例

嘿,Linux狂热者们,是时候让我们在这个充满激情的平台上探索一下HTTP协议的奥秘了。我知道,对于这个我们每天都在使用,但却可能没深入了解过的HTTP,你们一定充满了好奇和期待。那么,让我们一起踏上这趟探索之…

fripside - promise lrc

[ti:promise] [ed:2] [rt:20] [ml:0|0] [00:05.172]words:Satoshi Yaginuma, Shinichiro Yamashita [00:09.664]music&arrangement:Satoshi Yaginuma, Shigetoshi Yamada [00:14.565]PCゲーム「ENGAGE LINKS」 (Alcot) エンディングテーマ [00:20.000] [00:46.442]朝の陽射…

教师如何维护学生的自尊心

作为教师,我们不仅要传授知识,更要关心学生的身心健康,特别是他们的自尊心。自尊心是个人自我价值的重要体现,对学生的学习、生活和未来的发展都有深远的影响。因此,维护学生的自尊心是教师的重要责任。 教师要尊重每…

波奇学Linux:进程终止

写时拷贝底层原理图 子进程谁先运行,由调度器决定 进程退出场景 代码运行完毕,结果正确:有返回值,返回0 代码运行完毕,结果不正确:有返回值,返回非0 代码异常终止。没有返回值 return 0的…

Cuttlefish安装和运行

1.验证KVM可用性(X86机器) grep -c -w "vmx\|svm" /proc/cpuinfo 如果返回非0值,则说明kvm已经配置好。 2.安装Cuttlefish模拟器 sudo apt install git devscripts config-package-dev debhelper-compat golang curlgit clone https://github.com/goo…

十七、如何将MapReduce程序提交到YARN运行

1、启动某个节点的某一个用户 hadoopnode1:~$ jps 13025 Jps hadoopnode1:~$ yarn --daemon start resourcemanager hadoopnode1:~$ jps 13170 ResourceManager 13253 Jps hadoopnode1:~$ yarn --daemon start nodemanager hadoopnode1:~$ jps 13170 ResourceManager 15062 Jp…

【小沐学Python】Python实现通信协议(grpc)

文章目录 1、简介2、安装3、定义接口4、编译生成5、代码编写5.1 服务端5.2 客户端5.3 运行测试 结语 1、简介 https://grpc.io/docs/what-is-grpc/introduction/ https://github.com/grpc/grpc gRPC 是一种现代、开源、高性能的远程过程调用 (RPC) 可以…

Python生成器(Generator)的应用场景和使用(继续更新...)

学习网页: Welcome to Python.orghttps://www.python.org/https://www.python.org/ Python生成器(Generator) 生成器在Python中有很多应用场景,以下是一些常见的应用场景: 处理大数据量和耗时操作的场景&#xff…

Mybatis在新增某个数据后,如何获取新增数据的id

在某些业务中&#xff0c;我们在新增一条数据之后&#xff0c;需要拿到这条数据的id来对这条数据进行后续的一个操作&#xff0c;如何拿取id呢&#xff1f; 使用的是<insert> 中的useGeneratedKeys 和 keyProperty 两个属性 1.在Mybatis Mapper文件中添加属性 “useGene…

【STM32】STM32学习笔记-对射式红外传感器计次 旋转编码器计次(12)

00. 目录 文章目录 00. 目录01. NVIC相关函数1.1 NVIC_PriorityGroupConfig函数1.2 NVIC_PriorityGroup类型1.3 NVIC_Init函数1.4 NVIC_InitTypeDef类型 02. 外部中断相关API2.1 GPIO_EXTILineConfig2.2 EXTI_Init2.3 EXTI_GetITStatus2.4 EXTI_ClearITPendingBit2.5 中断回调函…