RSA的运用和前后端签名的一些看法
RSA的运用和前后端签名的一些看法
- RSA在验签过程的使用场景分析
- 不按照上述方式验签会造成的问题
- 日常前后端交互简化版的RSA应用分析
RSA在验签过程的使用场景分析
RSA的文章有很多。原理性学术性的对于我这样普通的码农毫无意义,对于我来说,我只想知道为什么我们要用RSA,以及什么情况下我们需要使用它?这是一篇粗浅且迅速入门的文章。
首先,我要介绍RSA验签的流程,稍后再分析为啥要这样做。
场景是存在(A)要传输数据给(B)。为方便起见,我们把数据称为(R)。
此时:A与B各自持有自己的privateKey,以及公之于众的publicKey(由RSA算法生成)。以下我们简称PVK(A)、PVK(B)、PUK(A)、PUK(B)。
A:
①使用某种算法给数据加密,通常会是MD5。我们得到密文M(R)。
②A对M(R)使用PVK(A)加密,得到RSA(M(R))。
③把RSA(M(R)) + R 这样的组合使用B公布的PUK(B)加密,得到最终的密文,简称F(R)。
B:
①B使用PVK(B)解密F(R)得到 RSA(M(R)) + R
到这一步,B已经拿到需要的R了,但是,他不知道R是否是A传来的,需要验签。
②B使用A公布的PUK(A)解密RSA(M(R))得到M(R)
③B使用MD5算法对R加密,得到M(R),比较两个M(R)是否一致,若一致,则验签成功。
不按照上述方式验签会造成的问题
那么假如上述方案去掉几步,会不会就不能成功验签了呢?
那我们不妨做一些假设。假如我就是不法分子C,伪造数据与B通信。
场景①:A只用了PUK(B)加密,B用PVK(B)解密。也就是所有操作阉割得只剩1步。
C:因为PUK(B)是公之于众的,所以我把伪造数据C也使用PUK(B)加密即可。
场景②:A使用PUK(B)加密(M(R)+R)的密文,用于MD5校验,是否能阻止C呢?
C:显而易见。我对(M(C)+C)使用PUK(B)加密,B解密后,依然无法验证C是否是正确的数据。
场景③:也就是按照上述流程,在M(R)上再套一层PVK(A)加密,会怎么样呢?
C:因为C没有PVK(A),只有PVK(C),所以B用PUK(A)无法解密RSA(M(C)),识破了C的阴谋。
日常前后端交互简化版的RSA应用分析
假如只是系统内部验签,其实不用这么麻烦。服务器A与B只需要各自约定加密方式即可。
最简化版的是:
A:
①对R做一些约定好的操作,生成R2。
②使用MD5加密,得到M(R2)。
③发送M(R2)+R
B:
①对R做相同的操作,生成R2。
②使用MD5加密,得到M(R2)。
③验证M(R2)是否相同,若相同,则验签成功。
但是这样的系统存在一些问题。
假如只有两个系统,那么没问题。但是假如有A、B、C、D、E、F等等,系统很多的话,他们之间的加密规则会变混乱,也许EF通信错转发数据给了A,A也顺利验签通过。所以我们需要给AB、AC、AD、AE、AF、BC …都建立一套新R约定的规则,过于麻烦。因此RSA此时就是这样一个规范且不需要额外记忆的规则。
因此我们在上述步骤中,对M(R2)再使用PVK(AB)加密,得到RSA(M(R2))。(验签始终使用PVK加密,这样不法分子C无法对数据伪造。)
这样,B端就可以使用和A约定好的PUK(AB)解密数据,再使用MD5验签了。
我总结一下RSA:
①假如传输数据不能被第三方看见,则用PUK加密。反过来,用什么都行。
②验签只能使用PVK加密,这样才能防止伪造数据。
因此RSA很好理解,就是PVK加密用于防止伪造,再用PUK加密用来隐藏数据。
RSA的运用和前后端签名的一些看法相关推荐
- 学习加密(四)spring boot 使用RSA+AES混合加密,前后端传递参数加解密
学习加密(四)spring boot 使用RSA+AES混合加密,前后端传递参数加解密 技术标签: RSA AES RSA AES 混合加密 整合 前言: 为了提高安全性采用了RSA,但 ...
- aes 加密_结合RSA与AES实现前后端加密通信
结合RSA与AES实现前后端加密通信 一.思路 使用RSA秘钥生成工具生成一对公钥(A)和私钥(B),前端保留A,后端保留B. 前端发送数据时,先生成一串随机16位字符串作为AES的秘钥(C),然后使 ...
- Vue与Spring boot基于RSA非对称加密进行前后端交互
当处理大型的系统项目,或者保密性要求高的项目.是要解除一些加密算法的,非对称加密肯定比对称加密更加安全,但是也更消耗性能.这里就展示一下前端使用Vue,后端使用Spring boot的情况下,进行前后 ...
- angular和JAVA实现aes、rsa加密解密,前后端交互,前端加解密和后端JAVA加解密实现
今天实现了下AES和RSA加密解密,主要的功能是对前后端交互数据进行加密解密,为什么要用到两个算法呢,首先RSA默认的话加密长度是有限的100多个byte吧大约,并且需要公钥私钥,而AES加密没有限制 ...
- 【笔记】个人网站建站不要用前后端分离!!!!!- 对前后端分离的个人看法
血淋淋的教训,让人无比心痛, 个人网站建站不要用前后端分离!!!!! 在上家公司开发,一心一意码代码,习惯了只写后端,不关注前端,真是做到了只关注后台逻辑和接口返回,不用关心其它的事情, 写的那是爽到 ...
- 学习加密(四)spring boot 使用RSA+AES混合加密,前后端传递参数加解密(方式一)
参考地址:https://blog.csdn.net/baidu_38990811/article/details/83540404
- 实现前后端分离的心得
对目前的web来说,前后端分离已经变得越来越流行了,越来越多的企业/网站都开始往这个方向靠拢.那么,为什么要选择前后端分离呢?前后端分离对实际开发有什么好处呢? 为什么选择前后端分离 在以前传统的网站 ...
- 前后端分离框架的实用及优点
这几天有很多新手同学问我这个问题.今天想写个博客给大家说一下自己对前后端分离开发的看法. 为什么要使用前后端分离开发的架构模式? 前后端不分离 在前后端不分离的应用模式中,前端页面看到的效果都是由后端 ...
- 教你玩转Vue和Django的前后端分离
题图:枯树新芽,来自网络,侵删. 阅读本文大概需要 10 分钟. 今天中秋节,先祝大家节日愉快,不在父母身边的都打个电话关心一下吧,我们最容易忽略的人恰恰是最爱我们的父母. 另外,节假日真的不适合出去 ...
最新文章
- xlsxwriter写行合并_使用xlsxwriter将pandas数据框写入excel并包含“write-rich”字符串格式...
- simpack导入实际线路激励
- android 动画多次使用,IOS使用animation引用同一个动画多次没反应,安卓可以
- 也谈闭包--小白的JS进阶之路
- 让内核突破512字节的限制
- 3月1日Azure夜校第三场继续开始
- vivo NEX 3 5G真机曝光:瀑布屏+升降镜头
- 基于JWT(Json Web Token)的授权方式
- BZOJ 2821: 作诗(Poetize) [分块]
- 屏幕空间的动态全局光照(漫反射)
- 程序员眼中的“鼠标宏”
- 虚拟机下的SYN Flood测试
- matlab如何生成极坐标,如何在matlab中极坐标画图
- jsp是java的一种吗_jsp是什么
- html touch时没有阴影,4399touch怎么玩 Touch游戏常见问题汇总
- 解决nasm汇编gdb无法单步调试
- 计算机毕业设计之java+javaweb的电动车实名制挂牌管理系统
- yuv 格式之 Semi Planar和Planar
- win10启动0xc0000001错误
- expected `;' before ‘iter’