CryptoJS 是一个 JavaScript 的加解密的工具包。它支持多种的算法:MD5、SHA1、SHA2、SHA3、RIPEMD-160
哈希散列,进行 AES、DES、Rabbit、RC4、Triple DES
加解密。
- AES 高级加密标准,是下一代的加密算法标准,速度快,安全级别高
- DES 数据加密标准,适用于大量数据加密
- Triple DES 是 DES 的增强版
- RC4 流加密算法,密钥长度可变
- HmacSHA1 键控哈希算法(密钥与消息数据混合)
加密算法
1. 加密函数的参数是:(明文字符串, 密钥字符串,可选参数对象),返回密文字符串。
加密函数是:Cryptojs.AES.encrypt
,Cryptojs.DES.encrypt``,Cryptojs.Rabbit.encrypt
,Cryptojs.RC4.encrypt
,Cryptojs.TripleDES.encrypt
2. 解密函数的参数是:(密文字符串, 密钥字符串,可选参数对象),返回的结果必须用.toString(CryptoJS.enc.Utf8)
转为明文。
解密函数是:CryptoJS.AES.decrypt
,CryptoJS.DES.decrypt
,CryptoJS.Rabbit.decrypt
,CryptoJS.RC4.decrypt
,CryptoJS.TripleDES.decrypt
其中可选参数对象常用属性:
mode
:加密模式 【CBC、ECB、CFB、OFB、CTRGladman(CTR)】paddig
:填充方式 【 NoPadding、ZeroPadding、Pkcs7(Pkcs5)、Iso10126、Iso97971、AnsiX923】vi
: 偏移向量formatter
:自定义格式
下载 crypto-js
npm install crypto-js --save-dev yarn add crypto-js --dev // 或者下载 js 文件 https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.9-1/crypto-js.js
使用例子
以下代码是个人在项目中使用,仅供大家参考学习。
import CryptoJS from 'crypto-js'; // 默认的 KEY 与 iv const getKEY = () => CryptoJS.enc.Utf8.parse('0123456789ABHAED'); // 十六位十六进制数作为密钥 const getIV = () => CryptoJS.enc.Utf8.parse('DYgjCEIMVrj2W9xA'); // 十六位十六进制数作为密钥偏移量 /** * AES 加密 :字符串 key iv 返回 base64 */ export function encrypt(word) { const key = getKEY(); const iv = getIV(); const srcs = CryptoJS.enc.Utf8.parse(word); var encrypted = CryptoJS.AES.encrypt(srcs, key, { iv: iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.ZeroPadding, }); return CryptoJS.enc.Base64.stringify(encrypted.ciphertext); } /** * AES 解密 :字符串 key iv 返回 base64 * */ export function decrypt(word) { const key = getKEY(); const iv = getIV(); const base64 = CryptoJS.enc.Base64.parse(word); const src = CryptoJS.enc.Base64.stringify(base64); var decrypt = CryptoJS.AES.decrypt(src, key, { iv: iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.ZeroPadding, }); var decryptedStr = decrypt.toString(CryptoJS.enc.Utf8); return decryptedStr.toString(); }