1 RSA加密算法介绍

RSA又叫非对称加密算法,这类加密算法有一对秘钥,其中一个用来加密一个用来解密。这一对秘钥中你可以选择一个作为私钥(自己保存),另一个作为公钥(对外公开)。用私钥加密的内容只能用对应的公钥解密,反之用公钥加密的内容只能用对应的私钥解密。还有一种对称加密算法,其加密秘钥和解密秘钥为同一个秘钥,比如DES。

2 RSA加密过程

假设A 产生了一对秘钥,私钥自己保存,公钥对外公开,且B获得了A的公钥。在A,B通信的过程中:
A向B发送信息:A用自己的私钥加密,B只能用A的公钥解密。
B向A发送信息:B用A的公钥加密数据,A只能用自己的私钥解密
这样就保证了数据的安全传输;但是这中间存在问题,如果B向A发送数据的过程中被C拦截了,且C也有A的公钥,这样C就可以用A的公钥重新加密一份数据发送给A,这样就篡改了B发送给A的数据。为了避免这种情况,就要说到数字签名的作用了

3 私钥签名,公钥验签

因为在数据传输过程中有可能被篡改,因此我们要使用数字签名技术来校验发送人的身份,并且事后发送人不能抵赖。下面是数字签名的过程:用户还是A和B

1 B向A发送 信息 并且用约定好的摘要算法,把 信息 生成一个摘要,同时B用自己的私钥对这个摘要进行加密,生成的加密摘要就叫B的签名

2 把该信息和摘要一块发送给A

3 A收到B发送的信息,把该信息用相同的摘要算法生成一个摘要,然后用B的公钥解密A发送过来的摘要,得到一个明文摘要,对比这个明文摘要和B生成的摘要,如果相同说明该信息是B发送的并且该信息没有被篡改过。

最新文章

  1. 如何基于Azure平台实现MySQL HA(方法论篇)
  2. windows 下 新建 点开头的文件和文件夹
  3. js仿微信语音播放
  4. Java内存区域
  5. jQuery Flat Shadow – 轻松实现漂亮的长阴影效果
  6. [SQL Server系] -- 视图
  7. MongoDB(索引及C#如何操作MongoDB)(转载)
  8. Oracle 数据库(oracle Database)Select 多表关联查询方式
  9. Azure 媒体服务的 RTMP 支持和实时编码器
  10. python读取EXCLE文件数据
  11. Qt 3D研究(九):尝试第二边缘检测方法
  12. Memcached源码分析之从SET命令开始说起
  13. 遍历对象属性(for in、Object.keys、Object.getOwnProperty)
  14. 新建的小程序没有app.js,app.json等文件
  15. R画图的颜色搭配
  16. 关于全局变量,static,define和const
  17. 章节二、4-String以及StringBuffer和StringBuilder的对比
  18. 如何合并列表中key相同的字典?
  19. 【vue】vue +element 搭建项目,vue-cli 如何打包上线
  20. C# 语法五 单例类、单例模式

热门文章

  1. 18.Node.js 事件循环
  2. BZOJ2555: SubString(后缀自动机,LCT维护Parent树)
  3. Python之字符串切片
  4. CISP/CISA 每日一题 12
  5. Java String对象的经典问题
  6. 导入数据库工具有关的oracle sql操作
  7. 【MongoDB】The connection between two tables
  8. HDU 1848(sg博弈) Fibonacci again and again
  9. 前台Ajax发送数据给后台
  10. winedt (latex 编译器)解决中文的问题(CJK & CTEX)