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 库(推荐)

  1. 安装 CryptoJS
    在项目根目录执行:

    npm install crypto-js
    
  2. 在页面或工具文件中引入并使用

    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.requestencrypt 参数实现(功能有限,仅支持简单场景):

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 项目中使用,根据需求调整参数即可。

回到顶部