要在 Apifox 中利用 AES 加密算法对 password 参数进行加密,你须要在「前置操作」中编写 JavaScript 代码,并利用 CryptoJS 库来实现 AES 加密,详细操作见下文。
在开始之前,我们先理解一下什么是 AES 加密算法。

JavaScript(JS)中如何检讨一个工具(Object)是否包含指定的键(属性)什么是 AES 加密算法?

AES(Advanced Encryption Standard)是一种对称加密算法,它利用相同的密钥进行加密和解密。
在利用 AES 算法进行加密时,常日须要以下参数:

密钥 (Key) :AES 算法利用的密钥长度可以是 128 位、192 位或 256 位(16/24/32字节)。
密钥长度不同,安全性也不同。
初始向量 (Initialization Vector,IV) :初始向量是一个随机天生的固定长度的参数,用于增加加密的安全性,尤其是在对同一段明文进行多次加密时。
IV 的长度常日为 128 位(16字节)。
加密模式 (Mode of Operation) :AES 算法支持多种加密模式,例如 ECB、CBC、CTR、OFB、CFB 等。
每种模式有不同的特点和适用场景,选择得当的加密模式对付实际运用至关主要。
添补办法 (Padding) :在对明文进行加密时,如果明文的长度不是分组长度的整数倍,就须要对其进行添补。
常用的添补办法有 PKCS#5、PKCS#7 添补、Zero 添补等。
字符编码 (Character Encoding) :在对明文进行加密前,常日须要将其转换为字节流。
这时须要指定字符编码,如 UTF-8、ASCII 等。
密钥衍生 (Key Derivation) :有时候会利用密钥衍生函数(Key Derivation Function,KDF)从密码中派生呈现适用于加密的密钥。

这些参数的选择和配置须要根据详细的运用处景和安全需求来确定。
特殊把稳,加密和解密过程须要相同的密钥和初始向量才能精确实行。

apiphpaes加密在 Apifox 中采取 CryptoJS 进行高等 AES 参数加密 Vue.js

实现步骤

首先在 Apifox 中打开你的「登录」接口,然后转到【修正文档->前置操作】标签页,新建一个自定义脚本,你就可以在这里编写你的加密脚本。
须要把稳的是,自定义脚本须要在「变量更换&继续父级」之前,见下图:

接下来,我们就可以利用 AES 加密算法来给接口的要求参数加密了。

步骤 1

引入 CryptoJS 库

CryptoJS 是一个盛行的 JavaScript 库,用于供应加密算法的实现,例如 AES、DES、TripleDES、Rabbit、RC4、MD5、SHA-1、SHA-256 等。
利用 CryptoJS,你可以在客户端或做事器端轻松地实现加密功能,以保护数据的安全性。

Apifox 中内置了 CryptoJS 库,以是你可以直策应用,引入办法为:

var CryptoJS = require("crypto-js");步骤 2

编写 AES 加密脚本

假设你的密码字段名是 password,你可以先将其存到环境变量中并给定值(比如:123456),或者等下直接在脚本中赋值。

下面是一个利用 CryptoJS 进行 AES 加密的示例脚本,该脚本将加密后的密码存储到环境变量中,以便在后续的要求中利用。

// 导入 crypto-js 模块var CryptoJS = require("crypto-js");// 密码获取办法根据实际情形调度// 假设这是我们要加密的`password`字段的值,从环境变量中获取const password = pm.environment.get("password"); // 或其他办法获取,比如直接赋值// 利用安全办法确定的密钥和IV(这里为了示例简化解释,实际运用中须要保护好这些敏感信息)const key = CryptoJS.enc.Utf8.parse('mySecretKey12345'); // 确保是16/24/32字节const iv = CryptoJS.enc.Utf8.parse('myIVmyIVmyIVmyIV'); // 确保是16字节// AES加密const encrypted = CryptoJS.AES.encrypt(password, key, { iv: iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7}).toString();// 把加密后的密码设置为一个新的变量,可以在要求体内利用pm.environment.set("encryptedPassword", encrypted);

脚本详细阐明如下:

导入 crypto-js 模块。
利用环境变量或其他办法获取要加密的密码(在这里假设密码从环境变量中获取)。
定义了一个密钥 key 和一个初始化向量 iv。
密钥和初始化向量是用来加密和解密数据时的主要参数,在实际运用中,该当保护好这些敏感信息。
利用 crypto-js 中的 AES 加密函数 CryptoJs.AES.encrypt() 对密码进行加密。
个中,传入的参数包括原始密码 (password) 、密钥 (key) 、初始化向量 (iv) 以及加密模式 (mode) 和添补办法 (padding)
在 CryptoJS 中,利用 CryptoJs.pad.Pkcs7 来指定利用 PKCS#7 添补办法。
将加密后的密码存储到一个新的环境变量中,以便在后续的要求中利用。

在「前置操作」中编写的加密脚本会在发起要求之前自动实行,下面就来发起一个要求,看看这个 password 字段是否被加密并发送到后台做事了。

步骤 3

在要求体中利用加密后的密码

在要求体(假设你的要求体是 JSON 格式)中,利用加密后的密码代替原始密码:

JSON 数据格式(详解版)

{ "username": "zhangsan", "password": "{{encryptedPassword}}"}

这里的 {{encryptedPassword}} 是 Apifox 的变量语法,它会被更换为「前置操作」中设置的环境变量 encryptedPassword 的值,也便是通过 AES 加密算法加密后的值。

步骤 4

发送要求

点击「发送」按钮,查看返回相应。
我这里为了测试数据,以是让后台把接口传过来的参数解密后返回了,可以看到后台解密后的 password 字段值与上面 “步骤 2” 的环境变量中定义的值一样。

来到「实际要求」那里查看,可以看到接口发送的 password 字段是加密传参的,解释 AES 加密脚本生效。

附录

下面的代码是用 FastAPI 写的一段大略的 AES 解密脚本,有兴趣可以建个 .py 文件运行一下,对应的 http://127.0.0.1:8000/decrypt 便是上文例子的要求接口。
运行前记得安装干系的模块,如 pip install pycryptodome 等,也可以根据掌握台的报错来安装,缺什么就装什么。

from fastapi import FastAPIfrom pydantic import BaseModelfrom Crypto.Cipher import AESimport base64import uvicorn app = FastAPI() # 解密函数defdecrypt_password(password: str, key: bytes, iv: bytes) -> str: cipher = AES.new(key, AES.MODE_CBC, iv) decrypted_bytes = cipher.decrypt(base64.b64decode(password)) # 去除添补 unpadded_password = decrypted_bytes[:-decrypted_bytes[-1]].decode("utf-8") return unpadded_password class DecryptionRequest(BaseModel): username: str password: str @app.post("/decrypt")async def decrypt_password_endpoint(request: DecryptionRequest):# 在这里设定你的密钥和初始向量 key = b'mySecretKey12345' iv = b'myIVmyIVmyIVmyIV' password = request.password decrypted_password = decrypt_password(password, key, iv)return {"username": request.username, "password": decrypted_password} if __name__ == "__main__": uvicorn.run(app, host="127.0.0.1", port=8000)

在 Apifox 中利用 AES 加密算法对密码参数进行加密的基本步骤如下:

在前置操作中编写 JavaScript 代码,利用 CryptoJS 库实现 AES 加密。
引入 CryptoJS 库并编写 AES 加密脚本,定义密钥和初始化向量,并对密码进行加密。
将加密后的密码存储到环境变量中,以便在后续要求中利用。
在要求体中利用加密后的密码。
发送要求并查看相应,确认密码字段已加密传参。