微信小程序使用 CryptoJS 进行 AES 加密
代码片段: https://developers.weixin.qq.com/s/4dlVKTmv7n7e
点击链接查看代码片段的详细文档: https://mp.weixin.qq.com/debug/wxadoc/dev/devtools/devtools.html
函数封装:
- // aes_util.JS
- const CryptoJS = require('./aes.js'); // 引用 AES 源码 JS
- const key = CryptoJS.enc.Utf8.parse("0102030405060708"); // 十六位十六进制数作为秘钥
- const iv = CryptoJS.enc.Utf8.parse('0102030405060708');// 十六位十六进制数作为秘钥偏移量
- /**
- * aes 解密方法
- */
- function AesDecrypt(Word) {
- let encryptedHexStr = CryptoJS.enc.Hex.parse(Word);
- let srcs = CryptoJS.enc.Base64.stringify(encryptedHexStr);
- let decrypt = CryptoJS.AES.decrypt(srcs, key, {
- iv: iv,
- mode: CryptoJS.mode.CBC,
- padding: CryptoJS.pad.Pkcs7
- });
- let decryptedStr = decrypt.toString(CryptoJS.enc.Utf8);
- return decryptedStr.toString();
- }
- /**
- * aes 加密方法
- */
- function AesEncrypt(Word) {
- let srcs = CryptoJS.enc.Utf8.parse(Word);
- let encrypted = CryptoJS.AES.encrypt(srcs, key, {
- iv: iv,
- mode: CryptoJS.mode.CBC,
- padding: CryptoJS.pad.Pkcs7
- });
- return encrypted.ciphertext.toString().toUpperCase();
- }
- /**
- * base64 加密方法
- */
- function Base64Encode(val) {
- let str = CryptoJS.enc.Utf8.parse(val);
- let base64 = CryptoJS.enc.Base64.stringify(str);
- return base64;
- }
- /**
- * base64 解密方法
- */
- function Base64Decode(val) {
- let words = CryptoJS.enc.Base64.parse(val);
- return words.toString(CryptoJS.enc.Utf8);
- }
- // 暴露接口
- module.exports = {
- AesEncrypt,
- AesDecrypt,
- Base64Encode,
- Base64Decode
- }
页面调用:
- const CryptoJS = require('../../utils/aes_util.js');
- //aes 加密
- console.log('123456--aes 加密',CryptoJS.AesEncrypt('123456'))
- // 5A09AE89579945B7AB80A9DC08F66FAA
- //aes 解密
- console.log('123456--aes 解密',CryptoJS.AesDecrypt('5A09AE89579945B7AB80A9DC08F66FAA'))
- // 123456
- //base64 加密
- console.log('123456--base64 加密',CryptoJS.Base64Encode('123456'))
- //MTIzNDU2
- //base64 解密
- console.log('123456--base64 解密',CryptoJS.Base64Decode('MTIzNDU2'))
- //123456
输出结果:
image.PNG
来源: http://www.jianshu.com/p/7020288e182d