微信小程序在与后台交互数据过程中,敏感数据需要加解密,本篇博客介绍在微信小程序中如何使用 crypto.js 中的 AES 算法加解密数据
使用crypto.js加解密详解:https://blog.csdn.net/Umbrella_Um/article/details/99686988
AES加密算法的详细介绍与实现:https://blog.csdn.net/qq_28205153/article/details/55798628
1、引入crypto-js.js
crypto.js地址:https://blog-static.cnblogs.com/files/gygg/crypto-js.js
utils文件夹下新建crypto-js.js文件
2、封装crypto.js加解密
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | var CryptoJS = require( '/crypto-js.js' ); // 密钥 16 位 var key = 'skdidhjdksle2345' ; // 初始向量 initial vector 16 位 var iv = 'skdidhjdksle2345' ; // key 和 iv 可以一致 key = CryptoJS.enc.Utf8.parse(key); iv = CryptoJS.enc.Utf8.parse(iv); //加密 function encrypted(param) { var encrypted = CryptoJS.AES.encrypt(param, key, { iv: iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 }); encrypted = encrypted.toString(); return encrypted; } //解密 function decrypted(param) { var decrypted = CryptoJS.AES.decrypt(param, key, { iv: iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 }); decrypted = CryptoJS.enc.Utf8.stringify(decrypted); return decrypted; } module.exports = { encrypted: encrypted, decrypted: decrypted, } |
tips:key和iv和后端开发人员沟通后保持一致
3、使用crypto.js
js中引入crypto
01 | var crypto = require( '../../utils/crypto.js' ); //注意路径是否正确 |
调用加解密方法
01 02 | console.log(crypto.encrypted( "福田区" )) //加密 console.log(crypto.decrypted( "ZOrm989bMUvrC4E2YHrCYQ==" )) //解密 |
控制台输出
End!