jmeter 实现md5/sha256/sha512加密方式
jmeter 要实现md5、sha-256、sha-512的加密方式,主要有两种,一种是jmeter自带的digest函数,另一种就行通过beanshell方式实现。这两种的区别,主要是自带的digest函数使用简单,但由于是经过一层封装过,常规的加密方式还适用,但复杂一点的加密逻辑不太方便操作。而beanshell 由于是通过代码方式实现的。因而可以根据实际需要,调整响应的加密逻辑。比如:先加密一次后,再加盐,再二次加密。但是beanshell的要求也更高因为要了解相关的加密代码。比如:java、javascript、python 等方式。都可以用于jmeter的beanshell。只不过需要引入相应的jar包。
下面看下jmeter的digest函数支持的加密类型,常用的大体如下:
- MD5
- SHA-224
- SHA-256
- SHA-384
- SHA-512
jmeter帮助文档上还显示有其他的加密方式,但其实比较少用到。
在jmeter Function 面板中,找到的digest函数格式及说明,如下:
jmeter 的md5/sha-256/sha-512加密方式一:digest函数
Digest 的MD5的加密效果:
将结果转换大写内容:
MD5 加盐:
(缺点:由于封装在jmeter内部,不知道这个盐是怎么实现的,如果要实现复杂一写的加密方式,可能无法达到预期想要的)
Sha-256加密:
sha-512加密:
(sha-256/sha-512也支持加盐或结果大小写转换,用法与md5一致)
Jmeter md5/sha-256/sha-512加密方式二:beanshell形式
import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; public class DigestExample { public static String encryptExample(String input,String saltValue) { try { // 创建md5加密对象 MessageDigest md = MessageDigest.getInstance("md5"); // 执行加密操作 String input = input+saltValue; byte[] messageDigest = md.digest(input.getBytes()); // 将字节数组转换为16进制字符串 StringBuilder hexString = new StringBuilder(); for (byte b : messageDigest) { String hex = Integer.toHexString(0xff & b); if (hex.length() == 1) { hexString.append('0'); } hexString.append(hex); } // 返回加密后的字符串 return hexString.toString(); } catch (NoSuchAlgorithmException e) { throw new RuntimeException(e); } } // public static void main(String[] args) { // String input = "password123"; // String encrypted = encryptExample(input); // System.out.println("Original: " + input); // System.out.println("Encrypted: " + encrypted); // } } DigestExample md =new DigestExample(); String value = md.encryptExample("test",""); log.info("MD5加密未加盐:"+value); String t = "${__time(,)}"; String value_salt = md.encryptExample("test",t); log.info("时间戳:"+t); log.info("MD5加密加盐:"+value_salt); //将加密结果设置为jmeter的参数,便于后面引用 vars.put("md5_value",value);
运行结果:
Beanshell 的sha-256和sha-512与上面的md5的差不多。只需要将MessageDigest md = MessageDigest.getInstance("md5"); 的md5替换成sha-256/sha512即可.
如下: