BR 技术头条
ji www.jianshu.com / 2018-07-31 17:06 / by @shengting

RSA加密、解密和签名、验签过程理解

这里将A理解为客户端,B理解为服务端,可以比较好理解.

加解密过程简述
A和B进行通信加密,B要先生成一对RSA密钥,B自己持有私钥,给A公钥 --->A使用B的公钥加密要发送的内容,然后B接收到密文后通过自己的私钥解密内容

签名验签过程简述
A给B发送消息,A先计算出消息的消息摘要,然后使用自己的私钥加密消息摘要,被加密的消息摘要就是签名.(A用自己的私钥给消息摘要加密成为签名)

B收到消息后,也会使用和A相同的方法提取消息摘要,然后用A的公钥解密签名,并与自己计算出来的消息摘要进行比较-->如果相同则说明消息是A发送给B的,同时,A也无法否认自己发送消息给B的事实.(B使用A的公钥解密签名文件的过程,叫做\"验签\").

数字签名的作用:保证数据完整性,机密性和发送方角色的不可抵赖性
加密与签字结合时,两套公私钥是不同的

对签名和验签过程详细理解:
签名过程:

1. A计算消息m的消息摘要,记为 h(m)
2. A使用私钥(n,d)对h(m)加密,生成签名s, s满足:s=(h(m))^d mod n;
由于A是用自己的私钥对消息摘要加密,所以只用使用s的公钥才能解密该消息摘要,这样A就不可否认自己发送了该消息给B
3. A发送消息和签名(m,s)给B
验签过程:

1. B计算消息m的消息摘要(计算方式和A相同),记为h(m)
2. B使用A的公钥(n,e)解密s,得到 H(m), H(m) = s^e mod n
3. B比较H(m)与h(m),相同才能证明验签成功

对加密/解密和签名/验签完整过程详细理解:
A->B:
1. A提取消息m的消息摘要h(m),并使用自己的私钥对摘要h(m)进行加密,生成签名s
2. A将签名s和消息m一起,使用B的公钥进行加密,生成密文c,发送给B

B:
1. B接收到密文c,使用自己的私钥解密c得到明文m和数字签名s
2. B使用A的公钥解密数字签名s解密得到H(m)
3. B使用相同的方法提取消息m的消息摘要h(m)
4. B比较两个消息摘要。相同则验证成功;不同则验证失败

赞过的人

@技术头条

发表评论

相关分享

te tech.meituan.com / 2025-01-12 11:53

鸿蒙应用签名实操及机制探究

本文深入探讨了 HarmonyOS NEXT 的应用签名机制,详细解析了签名过程的每个步骤及其背后的实现原理,并通过源码分析了签名的校验机制。文章旨在揭示鸿蒙系统的安全设计思路,为从事鸿蒙研发的开发者提供参考。适合对鸿蒙系统安全机制感兴趣的开发者和安全研究人员阅读。

无图
di www.diguage.com / 2025-01-03 00:24

理解数据库分片

这篇文章系统讲解了数据库分片的概念、优缺点以及常见的分片方法,包括基于键的分片、基于范围的分片和基于目录的分片。通过图文并茂的方式,作者详细阐述了每种分片策略的实现原理和适用场景。内容适合数据库管理员、系统架构师以及对数据库扩展性设计感兴趣的开发者,提供了深入理解数据库分片的宝贵参考。

无图
li lisenhui.cn / 2024-11-23 21:54

隐藏的换行符导致Base64加密解密失败

通过 printf 和 base64 命令,可以快速实现字符串的加密与解密。操作简单高效,特别适合开发调试或轻量级任务。灵活使用 Linux 工具,让你的工作更高效!

无图
cr crossoverjie.top / 2024-11-23 21:51

深入理解 StarRocks 的元数据管理

StarRocks 元数据采用分层设计:前端负责 SQL 解析和优化,元数据存储在后端,通过 Raft 协议实现高可用和一致性。其灵活的分布式架构,保证了查询效率和系统稳定性,适用于大规模数据分析场景!

无图
im imququ.com / 2024-08-06 08:01

记一次图片访问异常排查过程

本文总结了一次关于头像图片访问异常的排查过程。用户反馈在某些网络环境下无法查看特定域名的头像图片,经过分析发现问题是由于网络环境对该域名的连接进行了阻断,可能是被误认为广告域名。通过替换域名解决了问题。文章还讨论了SNI(服务器名称指示)在HTTPS连接中的作用及其在拦截请求中的应用。

无图
l1 l1n.wang / 2024-01-17 23:09

HTTPS通信过程分析

为什么需要HTTPS?HTTP缺点: 1. 明文传输; 2.C/S两端不存在验证机制,无法确认对方身份,可能存在中间人攻击。

无图
sx sxyz.blog / 2023-12-11 23:21

从零实现 AES 加密算法

这篇文章介绍从零实现一个简单的 AES-128-ECB,其中 128 指采用 128 位密钥块,ECB 指采用 Electronic codebook 分组模式,并为长度不足 128 位的数据块填充 0x00。

本文代码部分选择使用 Python,因为其语法简单而强大,我想把更多时间、精力花在加解密流程上,而非语法细节上。本文所有代码仅供学习研究之用,不要用在生产环境!生产环境请使用流行、成熟的专用密码库,否则可能导致潜在的 Side-channel attack 和其它安全问题。

无图
hi hiwannz.com / 2023-11-29 23:49

团队管理过程的信息不对称

聊聊那些在工作中常见的“信息不对称”。虽然这个名词几乎每个人都听到过,但实际上我觉得还是可以按照“人员,角色,岗位”三个维度拆分成 5 种不同的信息不对称区别。

无图
te tech.meituan.com / 2023-11-29 23:40

基于UI交互意图理解的异常检测方法

美团到店平台技术部/质量工程部与复旦大学周扬帆教授团队开展了科研合作,基于业务实际场景,自主研发了多模态UI交互意图识别模型以及配套的UI交互框架。本文从大前端质量保障领域的痛点出发,介绍了UI交互意图识别的方法设计与实现。基于UI交互意图编写的测试用例在实际业务中展现出了可以跨端、跨App的泛化能力,希望可以为从事相关工作的同学带来一些启发或帮助。

无图