强大的前端加密/解密js库crypto-js使用解析
作者:cywcd 发布:2018-10-30 17:54 字符数:2166 分类:javascript 阅读: 46,505 次 抢沙发
crypto-js
crypto-js 是一个纯 javascript 写的加密算法类库 ,可以非常方便地在 javascript 进行 MD5、SHA1、SHA2、SHA3、RIPEMD-160 哈希散列,进行 AES、DES、Rabbit、RC4、Triple DES 加解密。
1.使用方法:
1.1. 步骤
1.1.1.安装:
npm install crypto-js
1.1.2.使用示例:
ES6模块引入方法:
import sha256 from 'crypto-js/sha256'; import hmacSHA512 from 'crypto-js/hmac-sha512'; import Base64 from 'crypto-js/enc-base64';
模块加载引入方法:
var AES = require("crypto-js/aes"); var SHA256 = require("crypto-js/sha256");
页面标签引入方法:
1.1.3.vue中使用实例:
const CryptoJS = require('crypto-js'); //引用AES源码js const key = CryptoJS.enc.Utf8.parse("1234123412ABCDEF"); //十六位十六进制数作为密钥 const iv = CryptoJS.enc.Utf8.parse('ABCDEF1234123412'); //十六位十六进制数作为密钥偏移量 //解密方法 function Decrypt(word) { let encryptedHexStr = CryptoJS.enc.Hex.parse(word); let srcs = CryptoJS.enc.Base64.stringify(encryptedHexStr); let decrypt = CryptoJS.AES.decrypt(srcs, key, { iv: iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 }); let decryptedStr = decrypt.toString(CryptoJS.enc.Utf8); return decryptedStr.toString(); } //加密方法 function Encrypt(word) { let srcs = CryptoJS.enc.Utf8.parse(word); let encrypted = CryptoJS.AES.encrypt(srcs, key, { iv: iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 }); return encrypted.ciphertext.toString().toUpperCase(); } export default { Decrypt , Encrypt }
上面的代码中的 key 是密钥 ,iv 是密钥偏移量,这个一般是接口返回的,或者前后端协定一致。
值得注意的是密钥的长度,由于对称解密使用的算法是 AES-128-CBC算法,数据采用 PKCS#7 填充 , 因此这里的 key 需要为16位
定义加密方法Encrypt和解密方法Decrypt ,最后通过 export default 将其暴露出去,方便在需要的时候进行引入
1.2. 前端简单加解密
文本加密
var CryptoJS = require("crypto-js"); // Encrypt var ciphertext = CryptoJS.AES.encrypt('my message', 'secret key 123'); // Decrypt var bytes = CryptoJS.AES.decrypt(ciphertext.toString(), 'secret key 123'); var plaintext = bytes.toString(CryptoJS.enc.Utf8); console.log(plaintext);
对象加密
var CryptoJS = require("crypto-js"); var data = [{id: 1}, {id: 2}] // Encrypt var ciphertext = CryptoJS.AES.encrypt(JSON.stringify(data), 'secret key 123'); // Decrypt var bytes = CryptoJS.AES.decrypt(ciphertext.toString(), 'secret key 123'); var decryptedData = JSON.parse(bytes.toString(CryptoJS.enc.Utf8)); console.log(decryptedData);
1.3. 项目地址:
https://github.com/brix/crypto-js
1.4. API
http://cryptojs.altervista.org/api/
参考资料:
1. https://www.jianshu.com/p/a47477e8126a
2. https://blog.csdn.net/weixin_40918145/article/details/81253772