uniapp如何实现AES加密
在uniapp中如何使用AES加密数据?希望提供一个完整的示例代码,包括密钥生成、加密和解密的实现步骤。另外,需要注意哪些安全性问题?
2 回复
在uniapp中,可以使用crypto-js库实现AES加密。先安装crypto-js,然后引入并调用加密函数,设置密钥和模式即可。示例代码:
import CryptoJS from 'crypto-js';
let encrypted = CryptoJS.AES.encrypt('要加密的内容', '密钥').toString();
在 UniApp 中实现 AES 加密,可以使用 CryptoJS 库或 UniApp 内置 API。以下是两种方法,以 AES-128-CBC 模式为例(需安装 CryptoJS):
方法一:使用 CryptoJS 库(推荐)
-
安装 CryptoJS
在项目根目录执行:npm install crypto-js -
在页面或工具文件中引入并使用
import CryptoJS from 'crypto-js'; // AES 加密函数 function encryptAES(data, key, iv) { const keyHex = CryptoJS.enc.Utf8.parse(key); // 密钥(16位) const ivHex = CryptoJS.enc.Utf8.parse(iv); // 偏移量(16位) const encrypted = CryptoJS.AES.encrypt(data, keyHex, { iv: ivHex, mode: CryptoJS.mode.CBC, // CBC 模式 padding: CryptoJS.pad.Pkcs7 // 填充方式 }); return encrypted.toString(); // 返回 base64 格式密文 } // AES 解密函数 function decryptAES(cipherText, key, iv) { const keyHex = CryptoJS.enc.Utf8.parse(key); const ivHex = CryptoJS.enc.Utf8.parse(iv); const decrypted = CryptoJS.AES.decrypt(cipherText, keyHex, { iv: ivHex, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 }); return decrypted.toString(CryptoJS.enc.Utf8); // 返回明文 } // 示例使用 const key = '1234567890123456'; // 16位密钥 const iv = 'abcdefghijklmnop'; // 16位偏移量 const plainText = 'Hello, UniApp!'; const encrypted = encryptAES(plainText, key, iv); console.log('加密结果:', encrypted); const decrypted = decryptAES(encrypted, key, iv); console.log('解密结果:', decrypted);
方法二:使用 UniApp 内置 API(仅 H5 和 App 端)
通过 uni.request 的 encrypt 参数实现(功能有限,仅支持简单场景):
uni.request({
url: 'https://example.com/api',
data: { plainText: 'Hello' },
encrypt: { // 仅部分端支持
algorithm: 'aes',
key: 'your-key',
iv: 'your-iv'
},
success: (res) => {
console.log('加密请求结果:', res);
}
});
注意事项
- 密钥与偏移量:需为 16/24/32 位字符串(对应 AES-128/192/256)。
- 跨端兼容:CryptoJS 支持全端,而内置 API 可能受限。
- 安全建议:密钥应妥善保管,避免硬编码在代码中。
以上代码可直接在 UniApp 项目中使用,根据需求调整参数即可。

