项目的开发接近最后的2个月,前几天有个需求需要采集敏感信息,企业和个人的一些信息,为了保护数据安全。我们前后端分别做了处理,本来老大打算只对value进行加密,但是那样的话,就需要一行行代码去加解密,太麻烦了,于是我就提了提建议,前台封装成对象去加密,后台直接转处理。
我:“老大,这样一个个加解密太麻烦了,我后台要写30多行代码一个个解密,要不前端对对象加密,我后台直接转?”
老大:“这样做我怕前端不好实现,要不你先做个前后台的DEMO ?”
我:“ok,没问题!”
于是我开始了研究,首先我先得在前端去加密对象。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <script type="text/javascript" src="jquery-2.2.0.min.js"></script> <script type="text/javascript" src="base64.min.js"></script> <script type="text/javascript"> userInfo = { name : '颤三', age : 18 } var jsonstr = JSON.stringify(userInfo); console.log(jsonstr); console.log(Base64.encode(jsonstr)); </script> </head> <body> </body> </html>
如上我先处理成了 json的格式,然后再做base64处理,那么接下来就是后台怎么处理了,处理如下
/** * base64 解密 * @throws UnsupportedEncodingException */ private static UserInfo stringToObject(String s) throws Exception { byte[] buf = Base64.base64ToByte(s); String str = new String(buf,"UTF-8"); JSONObject jsonObject = JSONObject.fromObject(str); UserInfo userInfo = (UserInfo) jsonObject.toBean(jsonObject, UserInfo.class); return userInfo; }
如此便解决了,一一解密的繁琐,当然base64处理也不怎么安全,后期我们的程序也会升级的。