import CryptoJS from 'crypto-js'
// 定义加/解密的 key
const initKey = 'Test-AES-CBC-128'
// 设置数据做兆块长度
const keySize = 128
//设置向量和服务端保持一致
const iv = "0abcdefghij7twhjm"
export const aesEncrypt = (data, key) =>{
/**
* CipherOption, 加密的一些选项:
* mode: 加密模式, 可取值(CBC, CFB, CTR, CTRGladman, OFB, ECB), 都在 CryptoJS.mode 对象下
* padding: 填充方式, 可取脊胡茄值(Pkcs7, AnsiX923, Iso10126, Iso97971, ZeroPadding, NoPadding), 都在 CryptoJS.pad 对象下
* iv: 偏移量, mode === ECB 时, 不需要 iv
* 返回的是一个加密对象
*/
const cipher = CryptoJS.AES.encrypt(data, key, {
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7,
iv: CryptoJS.enc.Utf8.parse(iv)
})
// 将加密后的数据转换成 Base64
const base64Cipher = cipher.ciphertext.toString(CryptoJS.enc.Base64)//CryptoJS.enc.Base64
console.log('base64Cipher', base64Cipher)
// 处理 Android 某些低版的BUG
// const resultCipher = base64Cipher.replace('//+/g,\'-\'').replace(g,'_')
// 返回加密后的经过处理的 Base64
return base64Cipher
}
/**
* 解密函数
* @param {string} encrypted - 加密的数据
* @param {string} key - 加密使用的 key
*/
export const aesDecrypt = (encrypted, key) =>{
// 先将 Base64 还原一下, 因为加密的时候做了一些字符的替换
// const restoreBase64 = encrypted.replace().replace(/_/g,'/')
// 这里 mode, padding, iv 一定要跟加密的时候完樱察全一样
// 返回的是一个解密后的对象
const decipher = CryptoJS.AES.decrypt(encrypted, key, {
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7,
iv: CryptoJS.enc.Utf8.parse(iv)
})
// 将解密对象转换成 UTF8 的字符串
const resultDecipher = CryptoJS.enc.Utf8.stringify(decipher)
// 返回解密结果
return resultDecipher
}
1.下载一份扒笑Js版的aesUtil.js源码。【注:文章末尾会贴出所有的相关类文件】2.下载一份Js版的md
5.js源码。
3.在pulic.js中进行加解密 *** 作代码如下,其中秘钥和秘钥偏猜此闭移量要与后台的一致。var CryptoJS = require('aesUtil.js')//引用...
4.在网络请求穗裂帮助类中进行参数的加密和返回数据的解密 *** 作。var aes = require...
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)