调试JS,AES加密出来的值是:YYTpUInr2hxOghRzcrT/og==
我用C#模拟出来的值却是:6A3B212823087993CBB0736798C97B3A
网站上的AES加密文件的加密段落是这样的
[JavaScript] 纯文本查看 复制代码
/**
* AES加密
*/
function encryptAES(src,aesEncryptsKey){
src=src.replace(/\%/g,'*DBBFH*');
//AES加密
var key = CryptoJS.enc.Utf8.parse("1234567890123456");
var iv = CryptoJS.enc.Utf8.parse("1234567890123456");
if(aesEncryptsKey!=null&&aesEncryptsKey!=undefined&&aesEncryptsKey.length==16){
key = CryptoJS.enc.Utf8.parse(aesEncryptsKey);
}
var encrypted = CryptoJS.AES.encrypt(src, key, {iv:iv,mode:CryptoJS.mode.CBC,padding: CryptoJS.pad.Pkcs7});
//encrypted出来的值就已经是YYTpUInr2hxOghRzcrT/og==
var maccval=encrypted.toString();
return escape(maccval).replace(/\+/g, '%2B');
}
而我通过了网上说的“CryptoJS与C#AES加解密互转 ”这个文章去模拟,确实另外一种格式?
到底哪里有问题呢?对了,上面的文章是32位的KEY,
[C#] 纯文本查看 复制代码 byte[] keyBytes = Encoding.UTF8.GetBytes(key.Substring(0, 32));
我改成了16位的
[C#] 纯文本查看 复制代码 byte[] keyBytes = Encoding.UTF8.GetBytes(key.Substring(0, 16));
因为网站key传进去JS的AES加密是16位的KEY。。。
|