<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>aes</title>
<meta content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" name="viewport">
<script src="jquery.js"></script>
<script src="crypto-js.js"></script>
</head>
<body>
<script>
/**
* KEY盐值转换
*/
function getKey(key) {
var realKey = CryptoJS.SHA1(key);
realKey = CryptoJS.SHA1(realKey).toString().substring(0, 32); //真正的key
return realKey;
}
/**
* 加密数据
*/
var aesEncrypt = function(data, keyStr, ivStr) {
var sendData = CryptoJS.enc.Utf8.parse(data);
var key = CryptoJS.enc.Utf8.parse(keyStr);
var realKey = getKey(keyStr);
var iv_ = CryptoJS.enc.Utf8.parse(ivStr);
var encrypted = CryptoJS.AES.encrypt(sendData, CryptoJS.enc.Hex.parse(realKey),{
iv:iv_,
mode:CryptoJS.mode.OFB,
padding:CryptoJS.pad.Pkcs7
});
console.log("原始值:"+data);
console.log("UTF-8后:"+sendData);
var encryptedStr = encrypted.ciphertext.toString();
console.log('加密后 '+encryptedStr);
console.log("加密转大写后:"+encryptedStr.toUpperCase());
//console.log("HEX加密:"+ CryptoJS.enc.Hex.parse(encrypted.ciphertext));
console.log("Base64加密:"+CryptoJS.enc.Base64.stringify(encrypted.ciphertext));
//return CryptoJS.enc.Base64.stringify(encrypted.ciphertext);
return encryptedStr.toUpperCase();
};
function aesDecrypt(data,keyStr,ivStr) {
console.log("原始值:"+data);
var cipherTextHexStr = CryptoJS.enc.Hex.parse(data);
var cipherTextBase64Str = CryptoJS.enc.Base64.stringify(cipherTextHexStr);
var key = CryptoJS.enc.Utf8.parse(keyStr);
var realKey = getKey(keyStr);
var iv_ = CryptoJS.enc.Utf8.parse(ivStr);
var decrypt = CryptoJS.AES.decrypt({
// ciphertext: CryptoJS.enc.Base64.parse(cipherTextBase64Str)
ciphertext: cipherTextHexStr
}, CryptoJS.enc.Hex.parse(realKey), {
iv:iv_,
mode: CryptoJS.mode.OFB,
padding: CryptoJS.pad.Pkcs7
});
console.log("解密后0:"+decrypt.toString());
console.log("解密后1:"+decrypt.toString(CryptoJS.enc.Utf8));
return decrypt.toString(CryptoJS.enc.Utf8);
}
let word ='18719800158';
let key='1234567812345679';
let iv ='1234567812345678';
console.log('最终结果:'+aesEncrypt(word,key,iv));
console.log('------------------------------开始解密------------------------------');
let decode = 'F2AD339655A76FF875FA6FAF02072ACF';
console.log('最终结果:'+aesDecrypt(decode,key,iv));
</script>
</body>
</html>
连续折腾三天。。。