需求:基于APP+后端服务(Spring框架),提供传输加密机制。
方案:采用AES加密,密钥的保护策略此处暂不讨论。这里主要讨论后端服务基于Spring下,如何方便的实现加解密。
方案一:APP端传输密文到后端接口,在每个具体的接口中实现参数解密,并在返回前加密结果。
优势:方案简单粗暴
劣势:当然这个方案是最LOW,也最繁琐的。如果是已有代码,涉及到大量接口修改,风险比较大。
方案二:在Filter过滤器实现,也是本文采用的。
基本思路:在Filter中可以获取到Request、Response对象,在Request中获取密文入参,解密再填充回去。在Response返回到客户端前,拦截明文再加密返回。
优势:1. 与业务代码解耦
2. 统一处理,避免大量修改
3. Filter支持路径匹配,可针对部分请求加解密。比如只针对APP传输加密,WEB请求不加密。
代码实现:(附件压缩包,上传了相关代码)
public class DecryptFilterProxy exten