当前位置: 首页 > Web前端 > JavaScript

前端crypto-jsaes加密解密

时间:2023-03-26 21:12:03 JavaScript

背景公司后台加解密采用aes方式。当时找了很多前端加解密库,最后决定使用crypto-js封装加解密方法。准备工作在前端项目中安装crypto-js包npminstallcrypto-js具体使用importCryptoJSfrom'crypto-js'constcrpytoConfig={AES_KEY:'key',AES_IV:'iv',}/***@descriptionaesEncryption*@param{string}要加密的字符串*/constcryptoEncrypt=word=>{const{AES_IV,AES_KEY}=crpytoConfigconstkey=CryptoJS.enc.Utf8.parse(AES_KEY)constiv=CryptoJS.enc.Utf8.parse(AES_IV)constsrcs=CryptoJS.enc.Utf8.parse(word)让加密='';加密=CryptoJS.AES.encrypt(srcs,key,{iv,mode:CryptoJS.mode.CBC,padding:CryptoJS.pad.Pkcs7})returnencrypted.ciphertext.toString(CryptoJS.enc.Base64)}/***@descriptionaesdecryption*@param{string}待解密的word字符串*/constcryptoDecrypt=word=>{const{AES_IV,AES_KEY}=crpytoConfig//因为我们公司后台加密的数据有些不一样,所以要替换这里的字符是正常进行加解密的,所以下面这句话要视情况而定。是否添加conststrWord=word.replace(/\_/g,'/').replace(/\-/g,'+')constkey=CryptoJS.enc.Utf8.parse(AES_KEY)constiv=CryptoJS.enc.Utf8.parse(AES_IV)constencryptedHexStr=CryptoJS.enc.Base64.parse(strWord)constsrcs=CryptoJS.enc.Base64.stringify(encryptedHexStr)让解密=''decrypt=CryptoJS.AES.decrypt(srcs,key,{iv,mode:CryptoJS.mode.CBC,padding:CryptoJS.pad.Pkcs7})返回decrypt.toString(CryptoJS.enc.Utf8).toString()}