前景:
1、本项目原有功能RSA客户端对敏感信息进行加密
2、本次漏洞说是服务端返回值有敏感信息,需要密文返回
3、最初只跟H5联调成功,后续APP联调失败(H5和APP的需求排期不一致),没关注到通用性
方案:
本次方案不算完美,还是有被劫持篡改的风险,但基本https证书认证加持,风险相对较小
客户端本地存需要存三个值:
1、RSA公钥
2、随机生成16个字符
3、AES偏移量
java加密
安卓同服务端代码
@Slf4j
public class AESClientUtils {
private static final String AES = "AES";
private static final String STRING_FORMAT = "UTF-8";
private static final String TRANSFORMATION = "AES/CBC/PKCS5Padding";
//定义一个初始向量的值 AES偏移量,客户端和服务端保持统一值
private static final String IV_STRING = "9999543210123666";
/**
* 加密
*
* @param aesKey AESkey
* @param content 明文
* @return 密文
*/
public static String encrypt(String aesKey, String content) {
try {
byte[] byteContent = con