在微信小程序中使用 CryptoJS 进行 AES 加密可以帮助您实现数据加密的需求。
1. 引入 CryptoJS 库
首先,您需要在小程序的 app.json 中配置 CryptoJS 的路径,确保可以正确引入 CryptoJS 库。假设您已经将 CryptoJS 下载并放置在小程序的合适位置(比如 utils/crypto-js 文件夹内)。
{ "usingComponents": { "crypto-js": "/utils/crypto-js/crypto-js.js" } }
2. 编写加密方法
在需要加密的页面的 .js 文件中编写加密的方法。以下是一个示例,假设您要加密的数据是字符串:
// 引入 CryptoJS const CryptoJS = require('../../utils/crypto-js/crypto-js.js'); Page({ data: { encryptedText: '' // 存储加密后的文本 }, // 加密按钮点击事件 encryptData() { // 需要加密的原始数据 const data = 'Hello, AES encryption!'; // AES 加密密钥,16 字节 const key = CryptoJS.enc.Utf8.parse('1234567812345678'); // AES 加密向量 iv,16 字节 const iv = CryptoJS.enc.Utf8.parse('1234567812345678'); // AES 加密 const encrypted = CryptoJS.AES.encrypt(data, key, { iv: iv, mode: CryptoJS.mode.CBC, // 加密模式为 CBC padding: CryptoJS.pad.Pkcs7 // 填充方式为 Pkcs7 }); // 将加密后的数据存入 data 中 this.setData({ encryptedText: encrypted.toString() }); console.log('加密后的数据:', this.data.encryptedText); } });
3. 解密方法
如果需要在小程序中实现解密功能,可以编写对应的解密方法。
// 解密按钮点击事件 decryptData() { // 获取加密后的文本 const encryptedText = this.data.encryptedText; // AES 解密密钥,16 字节,与加密时的密钥相同 const key = CryptoJS.enc.Utf8.parse('1234567812345678'); // AES 解密向量 iv,16 字节,与加密时的 iv 相同 const iv = CryptoJS.enc.Utf8.parse('1234567812345678'); // AES 解密 const decrypted = CryptoJS.AES.decrypt(encryptedText, key, { iv: iv, mode: CryptoJS.mode.CBC, // 解密模式为 CBC padding: CryptoJS.pad.Pkcs7 // 填充方式为 Pkcs7 }); // 解密后的原始数据 const decryptedText = decrypted.toString(CryptoJS.enc.Utf8); console.log('解密后的数据:', decryptedText); }
注意事项
确保加密和解密时使用相同的密钥和向量(iv)。
小程序中的 CryptoJS 使用方式与普通 JavaScript 环境下略有不同,需要适当调整引入方式和参数传递方式。