SM4解密报错
最近项目中需要用国密SM4对传输报文进行加密,于是写了个简单的测试案例,对于简单的字符串加密解密是没问题的,但是对比较长的报文进行解密时,会报出异常信息:Last block incomplete in decryption,想到会不会是因为某些特殊字符影响到了,于是使用Base64在加密后进行编码,在解密前进行解码,问题真的解决了。
原因可能是以下两个方面:
1.使用Base64编码使得密钥具有可读性,方便密钥的发放;
2.使用Base64编码防止意外生成的系统定界字符(编码为base64之前 数据是以字节数组存放, 里面任何二进制字符都是可能的。如果有的语言以\0作为字符串结束标志,正好字节数组里面有\0的话,可能会有问题);