最近项目中有需要对一个字符串进行base64加密,一开始没太在意,直到遇到了一个很长的字符串,程序报错。经排查发现是base64加密后的字符串自动换行了,导致变量找不到。
当编码的字节较长时,base64加密字符串,rfc规范规定每76个字符换一次行,encode出来的字符串会自动加入\r\n 进行自动换行。
针对这种问题,只需在加密后把换行符替换掉就可以了
BASE64Encoder coder = new BASE64Encoder();
coder.encode(xxx).replaceAll("\r\n","");