官方文档:https://cryptojs.gitbook.io/docs/
AES (高级加密标准) 是美国联邦信息处理标准 (FIPS)。它是经过 5 年的过程,对 15 种竞争设计进行评估后选出的。CryptoJS 支持 AES-128、AES-192 和 AES-256。它将根据您传入的密钥的大小来选择变体。
1、安装
npm install crypto-js
2、封装
//引用AES源码jsimport CryptoJS from 'crypto-js'const key = CryptoJS.enc.Utf8.parse("1234123412ABCDEF");//十六位十六进制数作为密钥const iv = CryptoJS.enc.Utf8.parse('ABCDEF1234123412');//十六位十六进制数作为密钥偏移量//解密方法function Decrypt(word) {//返回的是解密后的对象let decrypt = CryptoJS.AES.decrypt(restoreBase64,key,{iv:iv,mode:CryptoJS.mode.CBC,padding:CryptoJS.pad.Pkcs7});//将解密对象转换成UTF8的字符串let decryptedStr = decrypt.toString(CryptoJS.enc.Utf8);//返回解密结果return decryptedStr.toString();}//加密方法function Encrypt(word){let srcs = CryptoJS.enc.Utf8.parse(word);//CipherOption,加密的一些选项://mode:加密模式,可取值(CBC,CFB,CTR,CTRGladman,OFB,ECB),都在CryptoJS.mode对象下//padding:填充方式,可取值(Pkcs7,Ansix923,Iso10126,ZeroPadding,NoPadding),都在CryptoJS.pad对象下//iv:偏移量,mode===ECB时,不需要iv//返回的是一个加密对象let encrypted = CryptoJS.AES.encrypt(srcs,key,{iv:iv,mode:CryptoJS.mode.CBC,padding:CryptoJS.pad.Pkcs7});//将结果进行base64加密return encrypted.ciphertext.toString(CryptoJS.enc.Base64);}export {Decrypt,Encrypt}
3、使用
import {Encrypt} from "../../utils/secret";var userName = Encrypt(this.userName)//加密用户名var userPassword = Encrypt(this.password)//加密用户密码console.log('加密后:',userName)console.log('加密后:',userPassword)
4、加入rsa传递aes秘钥的情况处理(不推荐)
// rsaHelper.jsimport JsEncrypt from 'jsencrypt/bin/jsencrypt'import { getKey, AESEnc, AESDec } from './lib/aes'export const rsaEncode = (string = '') => {// const RSA = newconst publicKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCRQZ5O/AOAjeYAaSFf6Rjhqovws78I716I9oGF7WxCIPmcaUa1YuyLOncCCuPsaw69+RMWjdbOBp8hd4PPM/d4mKTOVEYUE0SfxhhDTZaM5CzQEUXUyXy7icQTGR5wBjrbjU1yHCKOf5PJJZZQWB06husSFZ40TdL7FdlBpZ1u1QIDAQAB";const encrypt = new JsEncrypt.JSEncrypt();encrypt.setPublicKey(publicKey);return encrypt.encrypt(string);}export const createKey = () => (getKey());export const AES_ENCODE = (key, string = '') => {if (!string) throw new Error('encry content is required');return AESEnc(key, string);}export const AES_DECODE = (key, string = '') => {if (!string) throw new Error('encry content is required');return AESDec(key, string);}// 使用// import { rsaEncode, AES_ENCODE, createKey } from '@/utils/rsaHelper';// rsaEncode, AES_ENCODE, createKey// const key = createKey();// const data = {// username: this.addData.userName,// password: AES_ENCODE(key, this.addData.passWord),// rsaEncryptKey: rsaEncode(key),// }
