uniapp里我知道的有两种aes加密解密方式。

一、引入crypto-js

1.需要在uniapp项目根目录里,打开命令行,执行如下命令:

npm install crypto-js

2.在项目根目录,创建一个utils文件夹,并创建一个aes_endecrypt.js文件

/**
 * 工具类
 */
import Vue from 'vue'
import CryptoJS from 'crypto-js'
let keyStr = "abcde123456";//加密密钥
let ivStr  = "yyuuide45678";//矢量

//加密
export function aes_encrypt(word){ 
    keyStr = keyStr ? keyStr : 'hfhfuu8dolv98bt6';
    var key  = CryptoJS.enc.Utf8.parse(keyStr);
	var iv   = CryptoJS.enc.Utf8.parse(ivStr);
    // var srcs = CryptoJS.enc.Utf8.parse(word);
    var encrypted = CryptoJS.AES.encrypt(word, key, {
		iv:iv,
		mode:CryptoJS.mode.CBC,
		padding: CryptoJS.pad.Pkcs7});
    return encrypted.toString();
}

//解密  
export function aes_decrypt(word){  
    keyStr = keyStr ? keyStr : 'hfhfuu8dolv98bt6';
    var key  = CryptoJS.enc.Utf8.parse(keyStr);//
	var iv   = CryptoJS.enc.Utf8.parse(ivStr);
	// const restoreBase64 = word.replace(/\-/g,'+').replace(/_/g,'/');
	var restoreBase64=word.replace(/[\r\n]/g,'');

    var decrypt = CryptoJS.AES.decrypt(restoreBase64, key, {
		iv:iv,
		mode:CryptoJS.mode.CBC,
		padding: CryptoJS.pad.Pkcs7});
    return CryptoJS.enc.Utf8.stringify(decrypt).toString();
}

 3.在main.js文件中,引入方法,并注册为全局方法

import { aes_encrypt, aes_decrypt } from '@/utils/aes_endecrypt.js';
Vue.prototype.aes_encrypt = aes_encrypt;
Vue.prototype.aes_decrypt = aes_decrypt;

4.在页面中使用aes加密,解密

var encrypt = this.aes_encrypt('123456')
console.log('===encrypt===',encrypt);
var decrypt = this.aes_decrypt(encrypt)
console.log('===decrypt===',decrypt);

二、第二种方式:直接引入插件

1.在dcloud插件市场中搜索-传输加密,AES对称加密 (作者 ifloce)引入项目

2.项目main.js文件中,注册全局组件

import AES from '@/js_sdk/ar-aes/ar-aes.js'
Vue.prototype.AES = AES.AES

3. 在App.vue中,在methods中创建加密、解密方法

methods: {
	//AES加密
	aesEncrypt(encrypt){
		//加密值
		var e = this.AES.encrypt(encrypt,'1234567891234567','1234567891234567')
		return e;
	},
	//AES解密
	aesDecrypt(decrypt){
		//解密值
		var d = this.AES.decrypt(decrypt,'1234567891234567','1234567891234567')
		return d;
	},
},

4.在页面中使用aes加密解密方式

var encrypt = getApp().aesEncrypt('abcde123');
console.log('===encrypt===',encrypt);
var decrypt = getApp().aesDecrypt(encrypt);
console.log('===decrypt===',decrypt);

 

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐