项目在用Spring的EncryptionUtils加密解密时抛出这个异常,看了下异常日志,是在解密的时候抛出的,再看解密代码。
private final String ENCYPTION_KEY = "9849844146badfasdf97892345";
//加密
String loginName="aaa@111.com";
EncryptionUtils.encrypt(ENCYPTION_KEY, loginName);
生成加密字符串unique="jCLR5xpzSeSREmTt+ ZgcnA==" 忘记密码模板
//解密
String name = EncryptionUtils.decrypt(ENCYPTION_KEY, unique);
debug一下,发现unique="jCLR5xpzSeSREmTt ZgcnA==","+"不见了,name也出现了乱码,不等于aaa@111.com了,
问了老大一下,发现原因,原来没有对加密字符串进行编码,导致+变成空的,改正加密代码
java.net.URLEncoder.encode(EncryptionUtils.encrypt(ENCYPTION_KEY, loginName), "UTF-8");
最终生成unique="jCLR5xpzSeSREmTt% ZgcnA==";
+号变成%分号了,解密,一切正常!!!