1.鲍勃有两把钥匙,一把是公钥,另一把是私钥。


2.鲍勃把公钥送给他的朋友们—-帕蒂、道格、苏珊—-每人一把。 

3.苏珊要给鲍勃写一封保密的信。她写完后用鲍勃的公钥加密,就可以达到保密的效果 
4.鲍勃收信后,用私钥解密,就看到了信件内容。这里要强调的是,只要鲍勃的私钥不泄露,这封信就是安全的,即使落在别人手里,也无法解密。 

5.鲍勃给苏珊回信,决定采用 “数字签名”。他写完后先用Hash函数,生成信件的摘要(digest)。 

6.然后,鲍勃使用私钥,对这个摘要加密,生成”数字签名”(signature)。 

7.鲍勃将这个签名,附在信件下面,一起发给苏珊。 

8.苏珊收信后,取下数字签名,用鲍勃的公钥解密,得到信件的摘要。由此证明,这封信确实是鲍勃发出的。 
9.苏珊再对信件本身使用Hash函数,将得到的结果,与上一步得到的摘要进行对比。如果两者一致,就证明这封信未被修改过。 

10.复杂的情况出现了。道格想欺骗苏珊,他偷偷使用了苏珊的电脑,用自己的公钥换走了鲍勃的公钥。此时,苏珊实际拥有的是道格的公钥,但是还以为这是鲍勃的公钥。因此,道格就可以冒充鲍勃,用自己的私钥做成”数字签名”,写信给苏珊,让苏珊用假的鲍勃公钥进行解密。
 

11.后来,苏珊感觉不对劲,发现自己无法确定公钥是否真的属于鲍勃。她想到了一个办法,要求鲍勃去找”证书中心”(certificate authority,简称CA),为公钥做认证。证书中心用自己的私钥,对鲍勃的公钥和一些相关信息一起加密,生成”数字证书”(Digital Certificate)。 

12.鲍勃拿到数字证书以后,就可以放心了。以后再给苏珊写信,只要在签名的同时,再附上数字证书就行了。 

13.苏珊收信后,用CA的公钥解开数字证书,就可以拿到鲍勃真实的公钥了,然后就能证明”数字签名”是否真的是鲍勃签的。 

转自:http://blog.csdn.net/xy010902100449/article/details/52145009

非对称加解密交互故事相关推荐

  1. rsa大数加密c语言,C语言:基于OpenSSL-RSA实现RSA非对称加解密

    关于OpenSSL的介绍和安装在此不多赘述,可以在网上找到很多相关资料,各位感兴趣可以去了解下(自觉对OpenSSL开源库只是初级使用阶段,也就不在此"秀下限"了),直接进入主题, ...

  2. (转)C#创建数字证书并导出为pfx,并使用pfx进行非对称加解密

    我的项目当中,考虑到安全性,需要为每个客户端分发一个数字证书,同时使用数字证书中的公私钥来进行数据的加解密.为了完成这个安全模块,特写了如下一个DEMO程序,该DEMO程序包含的功能有: 1:调用.N ...

  3. 非对称加解密,私钥和公钥到底是谁来加密,谁来解密?

    第一种用法:公钥加密,私钥解密.-- 用于加解密 第二种用法:私钥签名,公钥验签.-- 用于签名 有点混乱,不要去硬记,总结一下: 你只要想: 既然是加密,那肯定是不希望别人知道我的消息,所以只有我才 ...

  4. python RSA非对称加解密模块[M2Crypto]

    python 实现rsa对称加解密目前有三个库:rsa.pycryptodome.M2Crypto 前两个库只能实现公钥加密私钥解密,M2Crypto可以实现公私钥互相加解密 M2Crypto的安装: ...

  5. java elgamal_Java加解密之非对称加解密Elgamal

    概述 Elgamal的使用和RSA很像,实现方式也差别不大,Elgamal加密后,密文的长度是明文的两倍,Elgamal和RSA最大的区别在于构建密钥的方式不同,而且前者只支持"公钥加密,私 ...

  6. iOS - 加解密(对称,非对称)(AES DES base64这里都有),数字签名,cookie

    这篇文章不是研究性的东西,主要是简单的一些知识, 开篇如此, 我尽量不让读者失望. 首先罗列一些知识点: 1.加密算法通常分为对称性加密算法和非对称性加密算法:对于对称性加密算法,信息接收双方都需事先 ...

  7. 文件加解密,AIDE入侵检测,扫描与抓包

    加/解密概述 发送方:明文->密文 接收方:密文->明文 加密目的及方式 确保数据的机密性 对称加密:加密/解密用同一个密钥 非对称加密:加密/解密用不同的密钥(公钥.私钥) 保护信息的完 ...

  8. 前后端数据加解密的几种方式比较

    对称加密 对称加密指的就是加密和解密使用同一个秘钥,所以叫做对称加密.对称加密只有一个秘钥,作为私钥. 具体算法有:DES,3DES,TDEA,Blowfish,RC5,IDEA.常见的有:DES,A ...

  9. 前后端RSA互相加解密、加签验签、密钥对生成(Java)

    目录 一.序言 二.关于PKCS#1和PKCS#8格式密钥 1.简介 2.区别 二.关于JSEncrypt 三.关于jsrsasign 四.前端RSA加解密.加验签示例 1.相关依赖 2.crypto ...

最新文章

  1. 用WinForm/WPF代码来为.NET Core 3.0功能投票
  2. 从内部自用到对外服务,配置管理的演进和设计优化实践
  3. Collection接口的常用方法
  4. 最简单的教程:在Ubuntu操作系统里安装Docker
  5. 科普 | 以链接为中心的系统:Link-based Systems
  6. java周志第二周_第二周JAVA学习日志
  7. mysql之为已经建好的表格添加id为自增主键
  8. vant 日历插件slots_vue的vant组件库中的slot如何按需使用呢
  9. 酷派新机先进得让人害怕,凄惨背后的原因竟是这样?
  10. 【认识硬件】之 电压比较器芯片LM393
  11. 计算机辅助翻译和机器翻译的区别,计算机辅助翻译和机器翻译有何区别?
  12. 常见网页特效案例:网页轮播图
  13. 【读书笔记】组合计数中的行列式方法
  14. 计算机考证一般多少钱
  15. vue在生产环境、测试环境和开发环境,三种环境下配置不同的api地址
  16. MATLAB新手简明使用教程(六)——使用matlab求解定积分和不定积分的问题——新手来看,保证看懂。
  17. 动图设置动图设置动图设置
  18. bloomFilter和哈希函数murmur3
  19. 摄像头P2P软件提供,完美解决打洞及音视频、用户码传输问题。
  20. 全连接层替换为卷积层

热门文章

  1. UVA 1599 Ideal Path
  2. LeetCode 876 Middle of the Linked List 解题报告
  3. C++使用流进行输入输出
  4. 操作系统学习笔记-2.1.3进程控制
  5. Unity-游戏小地图实战(前述知识点回顾与运用)
  6. 【剑指offer】面试题52:两个链表的第一个公共节点(java)
  7. Leetcode--904. 水果成篮
  8. python wx模块下choice列表框值怎么更新_wx python
  9. Debian10降级安装php,如何在Debian 10 Linux上安装PHP
  10. 什么是java的元数据_学习大数据,为什么要先学习Java?