关于JS加密插件CryptoJS实现AES加密操作的攻略,我这里提供以下完整步骤:
简介
CryptoJS是一个纯JavaScript编写的加密类库,支持的加密算法包括AES、DES、TripleDES、RC4、MD5、SHA-1、HMAC、PBKDF2等。其中AES即高级加密标准,是一种使用对称密钥加密的标准,它使用了128/192/256位密钥,常用的有128位和256位密钥的AES加密方式。
安装
CryptoJS可以使用npm包管理器进行安装,或者直接在线引用。
npm install crypto-js
加密流程
在加/解密之前,需要确定一个密钥和一个偏移量(iv),然后使用相应的模式(CBC/ECB等)进行加密操作。
-
生成密钥
javascript
var key = CryptoJS.enc.Utf8.parse("1234567890123456"); // 16位密钥
// var key = CryptoJS.enc.Utf8.parse("12345678901234561234567890123456"); // 32位密钥 -
生成随机偏移量
javascript
var iv = CryptoJS.lib.WordArray.random(16); // 16位随机偏移量 -
加密数据
javascript
var plaintext = "hello"; // 原文
var ciphertext = CryptoJS.AES.encrypt(plaintext, key, {
iv: iv,
mode: CryptoJS.mode.CBC, // CBC模式
padding: CryptoJS.pad.Pkcs7 // Pkcs7填充
}); -
解密数据
javascript
var decrypted = CryptoJS.AES.decrypt(ciphertext, key, {
iv: iv,
mode: CryptoJS.mode.CBC, // CBC模式
padding: CryptoJS.pad.Pkcs7 // Pkcs7填充
});
var plaintext = decrypted.toString(CryptoJS.enc.Utf8); // 解密后得到的原文
应用示例1:加密字符串
下面是一个加密字符串的示例:
// 生成密钥
var key = CryptoJS.enc.Utf8.parse("1234567890123456");
// 生成随机偏移量
var iv = CryptoJS.lib.WordArray.random(16);
// 原文
var plaintext = "hello world";
// 加密
var ciphertext = CryptoJS.AES.encrypt(plaintext, key, {
iv: iv,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7
});
console.log("加密后密文为:" + ciphertext.toString());
// 解密
var decrypted = CryptoJS.AES.decrypt(ciphertext, key, {
iv: iv,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7
});
var plaintext = decrypted.toString(CryptoJS.enc.Utf8);
console.log("解密后原文为:" + plaintext);
运行后,可以看到输出:
加密后密文为:U2FsdGVkX19cza1uvwia7HpV8BB+0hHlT1COKsDiTSA=
解密后原文为:hello world
应用示例2:加密JSON对象
下面是一个加密JSON对象的示例:
// 生成密钥
var key = CryptoJS.enc.Utf8.parse("1234567890123456");
// 生成随机偏移量
var iv = CryptoJS.lib.WordArray.random(16);
// JSON对象
var data = {name: "张三", age: 18, phone: "15811112222"};
// 加密
var plaintext = JSON.stringify(data);
var ciphertext = CryptoJS.AES.encrypt(plaintext, key, {
iv: iv,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7
});
console.log("加密后密文为:" + ciphertext.toString());
// 解密
var decrypted = CryptoJS.AES.decrypt(ciphertext, key, {
iv: iv,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7
});
var plaintext = decrypted.toString(CryptoJS.enc.Utf8);
var json = JSON.parse(plaintext);
console.log("解密后原来的JSON对象为:" + JSON.stringify(json));
运行后,可以看到输出:
加密后密文为:U2FsdGVkX18vUf/8K+/QhWvgtbQJ30ryTCHWvxEaJ9y6KQWuM+uTpHIXu/3uXbWx
解密后原来的JSON对象为:{"name":"张三","age":18,"phone":"15811112222"}
至此,CryptoJS实现AES加密操作的攻略就结束了,希望对您有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JS加密插件CryptoJS实现AES加密操作示例 - Python技术站