登录不加密

明文 用户名+密码登录。

1、问题:用户密码等隐私泄露

解决:隐私信息加密

方案:RSA非对称加密:客户端用公钥对密码加密;服务器用私钥解密

 

2、问题:请求参数金额额被篡改

解决:MD5加密

方案:客户端将用户名和金额拼一个字符串然后用MD5加密生成字符串s1传给服务器;服务器用也将用户名和金额拼一个字符串生成加密后的字符串s2,判断前端s1是否等于s2,不想等说明被篡改。

微信支付接口加密技术详解_接口加密算法

 

3、问题:MD5可以暴力正向推算然后撞库

解决:再给MD5加盐

方案:客户端将用户名和金额和固定字符串盐值“aaa”拼一个字符串然后用MD5加密生成字符串s1传给服务器;服务器用也将用户名和金额和固定字符串盐值“aaa”拼一个字符串生成加密后的字符串s2,判断前端s1是否等于s2,不想等说明被篡改。

 

 

4、问题:黑客拦截了url路径和SESSIONID等所有请求信息,模拟重复发请求,重复支付

解决:SESSIONID改为SESSIONID+TOKEN。不可控制,TOKEN程序可以控制。token里面包含时间戳设置超时时间甚至一次失效

 

微信支付接口加密技术详解_接口加密算法_02

方案:

1、用户名+密码+时间戳 ,然后md5生成token。

2、将token放到redis设置超时时间(ex)

3、将token用RSA公钥加密返给客户端

4、客户端支付时将token传给服务器支付接口,我们在支付做个拦截,即拦截器

5、拦截器RSA解密token,然后做token的有效性校验,比如token在redis是否存在。

6、如果需要更高的安全性,token用一次失效,那就校验完将token从redis删除即可。

 

微信支付接口加密技术详解_服务器_03

 

 

拦截器前置判断token有效性

 

 

 

微信支付接口加密技术详解_用户名_04