crypto-js,前端加密的JS库,加密解密示例(在vue中使用)
AES加密1. 安装,npm install crypto-js或者yarn add crypto-js2. 引入crypto-js,并封装加密解密的方法在项目的src下的utils文件夹(自己建的文件夹)下新建一个encrypt.js文件,内容如下:import CryptoJs from 'crypto-js' //引用AES源码jsexport default {//...
·
AES加密
1. 安装,
npm install crypto-js 或者yarn add crypto-js
2. 引入crypto-js,并封装加密解密的方法
在项目的src下的utils文件夹(自己建的文件夹)下新建一个encrypt.js文件,内容如下:
import CryptoJs from 'crypto-js' //引用AES源码js
export default {
// 加密,调用该方法时,传入的data必须是字符串类型,
// 故,如果要加密对象等类型,需要先用JSON.stringify()将其字符串化再传入
encryptByAES (data) {
let keyStr = 'TheKeyOfmyDatadx' // 16位,密钥字符串
let key = CryptoJs.enc.Utf8.parse(keyStr) // 将字符串的转为WordArray类型
let mydata = CryptoJs.enc.Utf8.parse(data)
// console.log('key:', key, 'mydata:', mydata)
let udata = CryptoJs.AES.encrypt(mydata, key, {
mode: CryptoJs.mode.ECB, // 加密模式,ECB模式
padding: CryptoJs.pad.Pkcs7 // 填充方式
})
let encrypted = udata.toString()// 返回的是base64的密文,是字符串类型
return encrypted
},
// 解密, 调用该方法时,传入的data是base64的密文
decryptByAES (data) {
let keyStr = 'TheKeyOfmyDatadx'
let key = CryptoJs.enc.Utf8.parse(keyStr)
let udata = CryptoJs.AES.decrypt(data, key, {
mode: CryptoJs.mode.ECB,
padding: CryptoJs.pad.Pkcs7
})
let decrypted = udata.toString(CryptoJs.enc.Utf8)// 返回的是加密之前的原始数据,是字符串类型
return decrypted
}
}
注意:
1).vue项目中使用crypto-js的AES加密方式,实现密码加密解密(ECB和CBC两种模式),这里以ECB为例;可以指定密钥偏移量iv
2) cryptojs支持对字符串计算,或者对WordArray类型(CryptoJS自己封装的数据类型)值的计算;
3) keyStr(密钥) 的长度要不小于14位,否则解密时会显示空白;
3. 在main.js中引入encrypt.js文件,并把其挂到Vue的原型上
import Vue from 'vue'
import EncryUtil from '@/utils/encrypt.js'
Vue.prototype.EncryUtil = EncryUtil
此操作过后,在vue的其他页面就可通过this.EncryUtil.方法名访问到encrypt.js的方法。
4. 在页面中使用,示例:
可在任意组件的mounted中测试:
mounted () {
let data = 'my message' // 需要加密的数据
let crypted = this.EncryUtil.encryptByAES(data) // 调用加密方法
console.log('base64密文:', crypted) // base64密文: nWdE7Ul83dWKZwQbINnFMw==
let decrypt = this.EncryUtil.decryptByAES(crypted) //调用解密方法
console.log('解密后的数据:', decrypt) // 解密后的数据: my message
}
更多推荐
已为社区贡献27条内容
所有评论(0)