You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JMeter录制脚本后请求体出现加密密码,CSV参数化失败

解决JMeter登录请求加密密码替换失败问题

问题本质

你的登录接口要求发送加密后的密码,而非明文。直接用CSV的明文密码替换请求体里的加密值,接口自然会校验失败。核心是要在JMeter中对明文密码做和前端一致的加密处理,再传入请求体。

步骤解决

1. 确定加密算法

从密码格式U2FsdGVkX1/...判断,这是OpenSSL AES加密的典型特征(前缀是Salted__的Base64编码),一般采用AES-128/256-CBC模式,带盐值加密。

2. 获取加密逻辑

  • 查前端源码:打开浏览器F12→Sources,搜索password、encrypt等关键词,找到登录时的加密JS代码,提取密钥、盐值、加密模式、填充方式。
  • 抓包对比:手动输入明文密码,观察浏览器发送请求前的加密过程,或检查是否有前置接口返回加密所需的动态密钥/盐值。

3. 在JMeter中实现加密(推荐用JSR223组件)

用Groovy编写加密代码,效率远高于BeanShell。以下是OpenSSL AES加密的示例代码(替换实际的密钥、盐值):

import javax.crypto.Cipher
import javax.crypto.spec.IvParameterSpec
import javax.crypto.spec.SecretKeySpec
import org.apache.commons.codec.binary.Base64
import org.apache.commons.codec.digest.DigestUtils

// 从CSV变量读取明文密码
def plainPwd = vars.get("csv_password")
// 替换为实际的盐值(可能是固定值或从接口提取的动态值)
def salt = "your_salt_value"
// 替换为实际的加密密钥
def key = "your_encryption_key"

// 生成OpenSSL风格的密钥和IV
def keyBytes = DigestUtils.md5(key + salt)
def ivBytes = DigestUtils.md5(keyBytes + key + salt)
SecretKeySpec secretKey = new SecretKeySpec(keyBytes, "AES")
IvParameterSpec ivSpec = new IvParameterSpec(ivBytes)

// 执行加密
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding")
cipher.init(Cipher.ENCRYPT_MODE, secretKey, ivSpec)
def encryptedBytes = cipher.doFinal(plainPwd.getBytes("UTF-8"))

// 添加OpenSSL的Salted__前缀并转Base64
def saltedPrefix = "Salted__".getBytes()
def combined = saltedPrefix + salt.getBytes() + encryptedBytes
def encryptedPwd = Base64.encodeBase64String(combined)

// 将加密后的密码存入变量,供请求体调用
vars.put("encrypted_password", encryptedPwd)
  • 把这段代码放到JSR223 PreProcessor(添加在登录请求下),确保在请求发送前完成加密。

4. 修改请求体

将原请求体中的固定加密密码替换为变量:

{"program":"AuthService","data":{"email":"${csv_email}","password":"${encrypted_password}","apiContextCode":"petronas"}}

5. 验证

运行脚本,查看请求体是否生成正确的加密密码,检查接口响应是否返回登录成功状态。

注意事项

  • 如果盐值是动态生成的(比如每次请求从前端或接口返回),需要先通过正则表达式/JSON提取器获取盐值,再传入加密代码。
  • 确保JMeter的lib目录下有commons-codec.jar(默认自带,若缺失需手动添加)。

内容的提问来源于stack exchange,提问作者vishakha bharambe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 23:57:50