基于aes的加解密方案

  

对前端上送的报文进行解密和验签
1,前端上送的报文先进行整体加密,然后把整体加密的数据作为encodeFieldVals的值;同时前端一起上送到后端的数据包括整体加密的aesKey
前端请求后端的例子:
http://127.0.0.1:8080 btoa/user/登录
{
encodeFieldVals=加密数据,
aesKey=整体加密的aesKey
}
2,后端获取encodeFieldVals和aesKey的值,使用aesKey对encodeFieldVals进行整体解密,整体解密后encodeFieldVals的数据格式为json格式。
解密后数据格式如下:
{
“deviceId":“a123xwsdfx4554rcffffooc87",
“osVersion":“5.1.10",
“userName":“王五“,
“password":“a123xwsdfx4554rcffffooc87a123xwsdfx4554rcffffooc87"
“phoneNo":“a123xwsdfx4554rcffffooc87a123xwsdfx4554rcffffooc87a123xwsdfx4554rcffffooc87",
“sex":“男“,
encryptFields:“密码、phoneNo"
serverTimestamp:“1200000”,
signtrue:“asfdsafax3134134912341241WQ"
}
3,验签,整体解密后的json有个字段signtrue,该字段是前端对数据的签名;把前端传到后台的所有键值进行排序,然后把除了关键为signtrue和encodeFieldVals的所有可以按如下格式:
fieldName1=fieldValue1& fieldName2=fieldValue2……
组装成字符串;进行签名后与signtrue进行比较,如果相等说明验签成功,否则验签失败。
4,单字段加密,整体解密加密后的json数据里,有部分敏感信息字段进行了加密,已经加密的字段有encryptFields指定,以英文逗号分隔。把这些字段的值拿到进行单字段解密。

  

流程图:
基于aes的加解密方案

  

基于aes的加解密方案”> <br/>对返回前端的报文进行加密和加签<br/> 1,如果配置了全部加密,则获取返回前端的数据进行全部加密,并把加密的数据作为encodeFieldVals的值返回</p>
  <p> 2,获取返回前端的数据根据配置的字段对需要加密的单字段进行加密,并把加密的数据作为encodeFieldVals的值返回前端,同时返回的json中包含encryptFields标识哪些字段做了单字段加密处理。<br/> {<br/>“respCode":“000000”, <br/>“respMsg“userId":“afasfa134dfdasf",
“email":“huang@sina.com",
“phoneNo":“13711645814”,
“nickName":“霸王“,
“accountInfo":{
“accountNo":“A1237897029",
“identityId":“440902198609228090”,
“nameName":“赵六“,
“validateDate":“20101010 - 20221010,
},
signtrue:“asfdsafax3134134912341241WQ",
encryptFields:“identityId, nameName"
}
3,返回加密后的数据到前端
流程图:
基于aes的加解密方案”> <br/> <img src=

基于aes的加解密方案