通信安全之MD5和RSA的综合使用及浅要理解

最近一直在搞一个外挂给官网用来连接其他业务系统的中介系统,我用jquery+springboot做的,我前端也挺菜的,而且官网那个样式有点奇葩,就自己慢慢调出来的包括一些分页什么的也没用UI库。目前是考虑到安全性问题了,其实自己还真没接触过安全这一块,以前一直是用不同公司已有的成熟的框架,所以还真是一直挺蒙的。
研究了一阵后稍微有点意识了吧,首先后台服务器指定要放内网上,然后就是通信数据加密的问题,领导让我做电子验签,但没细说,一开始我是想仿照springboot搞一套token来实现时间限制和验签,因为之前其实对token还挺怵的,也就研究过cookie,所以用户登录的一堆东西用cookie做的,然后一直还在改功能就没下手。后来领导就说做md5和rsa综合的一个加密,首先是把参数排序,按一定顺序取几个序号进行md5加密然后把密文通过rsa加密后传到后台rsa解密再把参数按既定顺序取序号md5加密对比校验。我一开始是不太了解的,软考倒是学了,md5是摘要不可逆的加密,rsa非对称加密,加密钥和解密钥不一样,但也仅限于此了。然后第二天就开始研究,因为我不知道为什么要这么搞,我就边查边学。我就觉得这样有点问题,因为我了解的攻击手段少,我知道他们可能截取我前台发往后台的数据进行修改或者是获取参数新消息,但这样如果我的数据被更改了我是没有办法知道的,所以md5应该加密参数部分,其次rsa加密md5的密文没有什么意义,本身就是密文,应当加密我的参数数据才比较有意义。
这么想完之后我开始弄,前端我把所有参数值拼接(因为参数较少,就是个中间系统),然后md5加密后将密文拼接到原参数中,将新生成的这个参数用rsa公钥加密(在这里再说一下,我没记错的话公钥加密是通信,私钥加密是验签,但这个我也想过,那种说的常是后台通信吧,我前后端这种访问加密虽然是验签,但其实前端的密钥肯定是要暴露的,与其暴露私钥,不如把公钥扔出来),然后后台接收密文,用rsa私钥解密,并将除md5之外的参数进行md5加密,对比传递过来的密文即可确认参数的完整性、一致性。
弄完我就问领导行不行,得知虽然这样我认为比较安全了,但是rsa的加密及其慢、占资源,所以不行,最后商量那不行就把rsa去掉,就先这样了,总之后台放服务器应该还挺安全的吧。。。
说了这么多废话挺多的,总之这个摘要md5加密是不可逆的,像用户密码一般也都用这个来存,存它的密文和salt(我以前管它叫“加密码”,其实就是密钥);那对称加密就是公用的一个密钥,双方都用这个加密解密,那就是不安全,别人获取到了这个密钥就完全破解了;非对称加密就是一个公钥一个私钥,这一对密钥,可能发送方也有一对,接收方也有一对,首先明确一点,私钥只能自己用,所以发送方发送消息加密方式就两种:用发送方的私钥加密,用接收方的公钥加密,那这两种区别:前者你用自己的私钥加密,你可以把公钥告诉任何人,这相当于是一个由点往外散发的形势,所以发送方如果是广播那种或者就是通信,就用这个;那后者是你用接收方的公钥加密,那这个密文只有接收方能破译,所以一般用于验签,因为只有那一个接收方懂你什么意思,他能通过你的信息来判断你这个发送方合不合规。
纯属日记了今天,一点点小理解,感谢指导!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值