RSA加密、解密和签名、验签过程理解 (www.jianshu.com)

【简介】

这里将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比较两个消息摘要。相同则验证成功;不同则验证失败

点击查看原文 >>

@shengting 2018-07-31 17:06 / 0个评论
赞过的人: @技术头条
要不要再学学下面的文章?
HTTPS通信过程分析 (l1n.wang)
为什么需要HTTPS?HTTP缺点: 1. 明文传输; 2.C/S两端不存在验证机制,无法确认对方身份,可能存在中间人攻击。
by @技术头条 2024-01-17 23:09 查看详情
写给开发人员的实用密码学(六)—— 对称密钥加密算法 (thiscute.world)
在密码学里面,最容易搞混的词估计就是「密码」了,cipher/password/passphrase 都可以被翻译成「密码」,需要注意下其中区别。
by @技术头条 2024-01-14 19:01 查看详情
从零实现 AES 加密算法 (sxyz.blog)
这篇文章介绍从零实现一个简单的 AES-128-ECB,其中 128 指采用 128 位密钥块,ECB 指采用 Electronic codebook 分组模式,并为长度不足 128 位的数据块填充 0x00。

本文代码部分选择使用 Python,因为其语法简单而强大,我想把更多时间、精力花在加解密流程上,而非语法细节上。本文所有代码仅供学习研究之用,不要用在生产环境!生产环境请使用流行、成熟的专用密码库,否则可能导致潜在的 Side-channel attack 和其它安全问题。
by @技术头条 2023-12-11 23:21 查看详情
团队管理过程的信息不对称 (hiwannz.com)
聊聊那些在工作中常见的“信息不对称”。虽然这个名词几乎每个人都听到过,但实际上我觉得还是可以按照“人员,角色,岗位”三个维度拆分成 5 种不同的信息不对称区别。
by @技术头条 2023-11-29 23:49 查看详情
基于UI交互意图理解的异常检测方法 (tech.meituan.com)
美团到店平台技术部/质量工程部与复旦大学周扬帆教授团队开展了科研合作,基于业务实际场景,自主研发了多模态UI交互意图识别模型以及配套的UI交互框架。本文从大前端质量保障领域的痛点出发,介绍了UI交互意图识别的方法设计与实现。基于UI交互意图编写的测试用例在实际业务中展现出了可以跨端、跨App的泛化能力,希望可以为从事相关工作的同学带来一些启发或帮助。
by @技术头条 2023-11-29 23:40 查看详情
数字签名为什么可以防篡改 (www.addesp.com)
你可能在电视剧中看到坏人威胁主角的时候会拿出作为人质的亲人写的信,而主角一看笔迹就知道是亲人所写的了。

在这里笔迹起到了两个作用:1、证明信的内容确实是亲人所写;2、证明内容没有被篡改过。

在计算机的世界中,我们同样需要对信息一样的验证。
by @技术头条 2023-11-06 23:24 查看详情
Github commit 签名+合并 Commit (crossoverjie.top)
借着这个机会也了解了 rebase 的骚操作挺多的,不过我平时用的最多的还是 merge,这个倒没有好坏之分,只要同组的开发者都达成一致即可。
by @技术头条 2023-10-25 00:02 查看详情
记录一下当年把 FreeBSD 中 zlib 砍到只剩一份的过程 (blog.delphij.net)
软件项目中,实现同一功能的源代码只保留一份是一项十分重要的最佳实践,这种做法可以带来许多显而易见的好处。

FreeBSD 是一个有相当长历史的项目,而 zlib 是一个很常用的库,并且当时在整个系统中有多处不同的副本,因此我们希望这个迁移的过程尽可能平滑而尽量不要直接导致整个项目无法联编,或是需要长时间禁用某些模块的情况。
by @技术头条 2023-10-24 23:52 查看详情
使用 GPG 对 Git commit/tag 进行签名 (mingming.wang)
为什么要签名
GPG 可以对 Git commit 或 tag 进行签名,其它用户可以知道这个 commit 来源可信,也就是作者本人提交的代码。
by @幸运小懒人 2023-09-22 11:30 查看详情
技术 | systemd:初学者如何理解其中的争议 (linux.cn)
在 Linux 世界中,很少有争议能像传统的 System V 初始化 系统(通常称为 SysVinit)和较新的 systemd 之间的斗争那样引起如此大的争议。

在这篇文章中,将简要讨论什么是 systemd、它相对于传统初始化系统有哪些优点和缺点以及为什么它会引起争议。
by @技术头条 2023-09-10 23:36 查看详情