RSA和MD5加密

不知不觉项目已经做了一年多了,从一开始简单的业务实现,到现在各个版本,各个终端并行升级的平台,项目已经逐步进入平稳发展的阶段。这时系统安全问题也就显得愈发重要。

接口部分最开始返回值没有加密,APP也没有对返回结果做任何验证,终于线上项目的一些漏洞被用户证实了,后面又有专家对我们系统的安全性能进行检测,结果很糟糕,这一系列事情引起了领导的重视。后面经理决定从最新版本开始对接口返回值加密。系统之前的请求参数一直是加密的,所以返回值加密和请求参数一致,用对等加密。

后面我再看了一下支付宝下单接口sign字段的生成是用的RSA加密,微信下单sign字段用的是md5加密,出于好奇,就去查了资料,看看这些加密。

sign字段的作用就是验证对方的身份和防止数据被篡改。

RSA加密属于非对等加密,用户需要设置公钥,用户用私钥加密后,支付宝后台用公钥解密,将解密后的参数与传过来的参数进行对比达到验证的作用。支付宝返回值也是用他的私钥加密,用户再用公钥解密。

MD5加密属于对等加密,md5加密是不可逆的,所以也是比较安全的。双方面使用一个key进行加密验证。发送者使用md5加密后,接收者把接收到的参数进行md5加密,再和收到的sign字段对比,达到验证的作用。支付宝的无密接口也提供了md5加密方式,想必是这种加密方式简单一些,适合多参数加密,而RSA加密解密算法相对复杂。

回过头想一下我们自己的系统,我觉得可以用RSA加密方式做验证,只需向app提供公钥,服务器自己保留私钥。APP向服务器请求是可以不做签名验证,没意义,只对参数的合理性做验证就够了。。如果服务器接收请求时也需要对请求参数做签名验证,那发送者也应该有自己的私钥,并要把公钥传到服务器。涉及到支付等重要数据的请求最好应该作签名验证。

目前我们系统对所以返回值都加密了,其实我觉得大可没必要,只需要对一些包含重要信息的接口进行加密,比如请求支付返回的数据,而像查询商品列表,详情等接口完全不需要加密,降低了效率。

 

转载于:https://my.oschina.net/emperror/blog/791181

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值