1、Illegal base64 character 20
报这个错误,是因为base64字符串传到了服务端以后,tomcat收到了字符串默认是decode处理的,然后如果前端不encode的话,就会出现 空格的情况,这样就导致了上面的错误。
查看了日志,发现有二处出现了空格。
解决:代码片段
uid(加密以后的原串):U2FsdGVkX1/4NmzFkl+ERKvn9M8HxOmCHucTBoGW6x+rJoERofRL2tFeqVg96AgAIR/y8sjs1rZDt+ebq4d7rA==
前端进行encode:
uid = encodeURIComponent(uid);
encode :U2FsdGVkX1%2F4NmzFkl%2BERKvn9M8HxOmCHucTBoGW6x%2BrJoERofRL2tFeqVg96AgAIR%2Fy8sjs1rZDt%2Bebq4d7rA%3D%3D
后端spring boot get方法收到参数就是正常的。
source:U2FsdGVkX1/4NmzFkl+ERKvn9M8HxOmCHucTBoGW6x+rJoERofRL2tFeqVg96AgAIR/y8sjs1rZDt+ebq4d7rA==
实测以后,发现这种方式是可以的。
2、Illegal key size
JDK受版本安全限制,默认只允许128位长度以内的。秘钥长度,如果密钥大于128, 会抛出java.security.InvalidKeyException: Illegal key size 异常。 java运行时环境默认读到的是受限的policy文件。 文件位于${java_home}/jre/lib/security, 这种限制是因为美国对软件出口的控制所造成的。JDK1.8之后已经兼容了该问题。
解决这个问题只要覆盖二个Jar包即可。
目前用的是JDK1.8版本,下载:JCE Unlimited Strength Jurisdiction Policy Files for JDK/JRE 8 Download 官网地址
这个需要oracle账号才可以下载。
百度网盘:
链接:https://pan.baidu.com/s/1HcCCycvFyJtaLVXJSK9_FA
提取码:tmii
覆盖处理:
这样就成功解决了。