JS中AES采用16位密钥(给定或者从后台获得),加密后的数据是不是16的倍数,是24位的,这样导致我后台不能解析,新人求帮助!!!!
云从天上来 2017-05-09 08:46:20 $.ajax({
url: "aesController/initAesKey",
async:false,
dataType:"text",
success:function(e){
alert(e.length);
var keyStr = 'bbbbbbbbbbbbbbbb';
var key = CryptoJS.enc.Utf8.parse(e);
var key1 = CryptoJS.enc.Utf8.parse(keyStr);
var account = CryptoJS.enc.Utf8.parse(m_account);
alert("到这里了");
var encrypted = CryptoJS.AES.encrypt(account,key1,{mode:CryptoJS.mode.ECB,padding:CryptoJS.pad.Pkcs7});
alert(encrypted.toString().length);
这里无论是ajax请求来的key还是直接写死的16位key1,加密后,得到的数据都是24位,导致后台解密的时候,报错
javax.crypto.IllegalBlockSizeException: Input length must be multiple of 16 when decrypting with padded cipher