###1.CryptoJS脚本下载
下载地址:http://pan.baidu.com/s/1slwHVLb
###2.WordArray (An array of 32-bit words.)
使用AES加密前,先了解下WordArray,我把它理解成CryptoJS中定义的 新的 数据类型,叫“单词数组”。
2.1 : 初始化
var wordArray = CryptoJS.lib.WordArray.create();//创建一个空的 WordArray对象
2.2 : WordArray 对象 —>16进制字符串
var string = wordArray.toString();//默认CryptoJS.enc.Hex,即16进制字符串
var string = wordArray.toString(CryptoJS.enc.Utf8);//utf-8字符串
2.3 : 16进制字符串 —>WordArray对象
var wordArray = CryptoJS.enc.Hex.parse(hexString);
2.4 : WordArray对象—>utf8字符串
var utf8String = CryptoJS.enc.Utf8.stringify(wordArray);
//等价于2.2中 wordArray.toString(CryptoJS.enc.Utf8);
2.5 : utf8字符串—>WordArray对象
var wordArray = CryptoJS.enc.Utf8.parse(utf8String);
2.6 : WordArray对象—>Base64字符串
var base64String = CryptoJS.enc.Base64.stringify(wordArray);
2.7 : Base64字符串—>WordArray对象
var wordArray = CryptoJS.enc.Base64.parse(base64String);
###3.简单使用
###4.延伸
AES加密函数 返回值为 加密对象ciphertext,其属性:
ciphertext: ciphertextWordArray,
key: keyWordArray,
iv: ivWordArray,
algorithm: CryptoJS.algo.AES,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.PKCS7,
blockSize: 4,
formatter: CryptoJS.format.OpenSSL
属性ciphertext即 密文,可以发现,其为WordArray类型。通过 加密对象.属性名 取值。
function aesEncrypt(message,key,iv){
var ciphertext = CryptoJS.AES.encrypt(message, key, {
iv: CryptoJS.enc.Hex.parse(iv),
mode: CryptoJS.mode.CBC,
padding:CryptoJS.pad.Pkcs7
});
return CryptoJS.enc.Base64.stringify(ciphertext.ciphertext);//密文 转 Base64字符串
}
//解密函数 稍有改动。
function aesDecrypt(crypted,key,iv){
var decrypted = CryptoJS.AES.decrypt({ciphertext: CryptoJS.enc.Base64.parse(crypted)},key,{
iv: CryptoJS.enc.Hex.parse(iv),
mode: CryptoJS.mode.CBC,
padding:CryptoJS.pad.Pkcs7
});
return decrypted.toString(CryptoJS.enc.Utf8);
}
###4.总结
很多都是自己的理解,希望不会有大的偏差。最近这个项目,遇到了AES加密,才有所了解。真是路漫漫其修远兮啊。。。
加密实战:紫美雅和1、紫美雅和2