首先需要引用相应的js包,即cypto.js下一系列的js文件(找不到资源的可留下邮箱)
所必须引用的资源如下所示:
<script type="text/javascript" src="../js/core.js"></script>
<script type="text/javascript" src="../js/md5.js"></script>
<script type="text/javascript" src="../js/evpkdf.js"></script>
<script type="text/javascript" src="../js/enc-base64.js"></script>
<script type="text/javascript" src="../js/cipher-core.js"></script>
<script type="text/javascript" src="../js/mode-ecb.js"></script>
<script type="text/javascript" src="../js/pad-nopadding.js"></script>
<script type="text/javascript" src="../js/aes.js"></script>
然后需要在自己定义的js文件中定义几个方法
加密方法:
function getAesString(data, key, iv) { // 加密
var key = CryptoJS.enc.Utf8.parse(key);
var iv = CryptoJS.enc.Utf8.parse(iv);
var encrypted = CryptoJS.AES.encrypt(data, key, {
iv: iv,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7
});
return encrypted.toString(); // 返回的是base64格式的密文
}
解密方法:
function getDAesString(encrypted, key, iv) { // 解密
var key = CryptoJS.enc.Utf8.parse(key);
var iv = CryptoJS.enc.Utf8.parse(iv);
var decrypted = CryptoJS.AES.decrypt(encrypted, key, {
iv: iv,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7
});
return decrypted.toString(CryptoJS.enc.Utf8); //
}
加密demo
var data = "症结所在";
var key = 'abcdefgabcdefg12'; //密钥
var iv = 'abcdefgabcdefg12';//向量,只能是16位
//密文,生成的密文就是base64格式的
var encrypted = getAesString(data, key, iv);
解密demo
var key = 'abcdefgabcdefg12';
var iv = 'abcdefgabcdefg12';
//生成的decryptedStr已经被默认转为了utf-8类型的字符串
var decryptedStr = getDAesString(encrypted, key, iv);