uni-app 继续针对API接口的AES加密插件

发布于 1周前 作者 htzhanglong 来自 Uni-App

uni-app 继续针对API接口的AES加密插件

API接口方面好像没啥安全措施,希望大佬写个AES加密的demo或者插件。

2 回复

第三方s d k原生插件开发定制,qq:16792999


在uni-app中,若需要对API接口的请求数据进行AES加密,可以通过封装一个AES加密插件来实现。以下是一个简单的示例,展示如何在uni-app中集成并使用AES加密插件。

首先,确保你已经安装了crypto-js库,这是一个流行的JavaScript加密库,支持AES加密。你可以通过npm或yarn安装:

npm install crypto-js --save
# 或者
yarn add crypto-js

然后,在你的uni-app项目中创建一个加密工具文件,例如aesEncrypt.js,并在其中编写AES加密函数:

// aesEncrypt.js
import CryptoJS from 'crypto-js';

// AES加密函数
export function aesEncrypt(text, key, iv) {
    const ciphertext = CryptoJS.AES.encrypt(text, CryptoJS.enc.Utf8.parse(key), {
        iv: CryptoJS.enc.Utf8.parse(iv),
        mode: CryptoJS.mode.CBC,
        padding: CryptoJS.pad.Pkcs7
    });
    return ciphertext.toString();
}

// AES解密函数(可选,用于测试或验证加密结果)
export function aesDecrypt(ciphertext, key, iv) {
    const bytes = CryptoJS.AES.decrypt(ciphertext, CryptoJS.enc.Utf8.parse(key), {
        iv: CryptoJS.enc.Utf8.parse(iv),
        mode: CryptoJS.mode.CBC,
        padding: CryptoJS.pad.Pkcs7
    });
    return bytes.toString(CryptoJS.enc.Utf8);
}

接下来,在你的页面或组件中引入并使用这个加密工具。例如,在pages/index/index.vue中:

<template>
  <view>
    <!-- 你的页面内容 -->
  </view>
</template>

<script>
import { aesEncrypt } from '@/utils/aesEncrypt'; // 假设aesEncrypt.js放在utils目录下

export default {
  methods: {
    sendEncryptedRequest() {
      const data = 'Hello, uni-app!';
      const key = 'your-secret-key-123456'; // 必须是16, 24, 或 32字节长度
      const iv = 'your-init-vector-1234'; // 必须是16字节长度

      const encryptedData = aesEncrypt(data, key, iv);
      console.log('Encrypted Data:', encryptedData);

      // 发送加密后的数据到API接口
      uni.request({
        url: 'https://your-api-endpoint.com/data',
        method: 'POST',
        data: {
          encrypted: encryptedData
        },
        success: (res) => {
          console.log('Response:', res.data);
        }
      });
    }
  },
  onLoad() {
    this.sendEncryptedRequest();
  }
}
</script>

这个示例展示了如何在uni-app中使用AES加密插件对请求数据进行加密,并通过uni.request发送加密后的数据到API接口。请确保你的密钥和初始化向量(IV)符合AES加密的要求,并根据实际需要调整加密和解密逻辑。

回到顶部