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