JMETER内置函数__MD5加密、__digest加密、DigestUtils方法加密、使用Python脚本进行加密

1.内置函数__MD5加密

JMETER内置函数__MD5加密、__digest加密、DigestUtils方法加密、使用Python脚本进行加密_第1张图片

参数说明:

  • String to calculate MD5 hash(必填):要加密的字符串。

  • Name of variable in which to store the result (optional):存储结果的变量的名称。

1、使用${__MD5(123456,pwd)}进行MD5加密,加密结果为32位小写。

2、使用${__uppercase(,)}可以将加密结果转为大写,例如:${__uppercase(${__MD5(123456,pwd)},)}

2.内置函数__digest加密

JMETER内置函数__MD5加密、__digest加密、DigestUtils方法加密、使用Python脚本进行加密_第2张图片

参数说明:

  • Digest algorithm(必填):加密算法,支持:MD2、MD5、SHA-1、SHA-224、SHA-256、SHA-384、SHA-512。

  • String to be hashed(必填):需要加密的字符串。

  • Salt to be used for hashing (optional):用于加密的盐。

  • Upper case result, defaults to false (optional):大写结果,默认为false。

  • Name of variable in which to store the result (optional):存储结果的变量的名称。

使用实例:${__digest(SHA-256,123456,,true,)},对字符串进行MD5加密,并将加密结果转为大写。

3.内置DigestUtils方法加密

在Jmeter中添加BeanShell Sampler,使用如下代码进行加密。

// md5import org.apache.commons.codec.digest.DigestUtils; 
String str = "${token}" + "${appkey}" + "${data}";String sign = DigestUtils.md5Hex(str);log.info("加密后的标签为:" + sign);
vars.put("sign",sign);​​​​​​
// sha256import org.apache.commons.codec.digest.DigestUtils;
String keytoSign = "需要进行加密的字符串";String sign = DigestUtils.sha256Hex(keytoSign);log.info("加密结果为:"+sign);
vars.put("sign",sign);

4.使用Python脚本进行加密

在Jmeter中添加JSR223 Sampler,语言选择Python,代码如下:

import hashlib
str = "123456"m = hashlib.md5()b = str.encode(encoding='utf-8')m.update(b)str_md5 = m.hexdigest()str_md5 = str_md5.upper()
vars.put("pwd",str_md5)

JSR223 Sampler只支持Python2,不支持Python3。

5.实际运用

工作场景:现有一个接口,需要调用100笔,入参中的NE_HASH不能重复。这里选择Jmeter内置的DigestUtils方法来编写脚本代码。

import org.apache.commons.codec.digest.DigestUtils;
String str = "110${__Random(100,200,)}8";String ne = DigestUtils.md5Hex(str);vars.put("md5_ne",ne.toUpperCase());
log.info("NE的值为:" + str);log.info("NE加密后的值为:" + phone);

在接口入参中NE_HASH引用该变量,保存脚本然后运行。

通过Debug Sampler可以看到手机号MD5随机生成,接口调用成功。

 

你可能感兴趣的:(jmeter,jmeter,测试工具)