jmeter通过BeanShell对接口参数进行MD5和HmacSHA256加密【杭州多测师_王sir】

news/2025/2/23 15:52:50

一、在eclipse里面编写MD5加密算法

package com.Base64;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class Md5Utils {
    
    public static String md5(String sourceStr) {
        String result = "";
        try {
            MessageDigest md = MessageDigest.getInstance("MD5");
            md.update(sourceStr.getBytes());
            byte b[] = md.digest();
            int i;
            StringBuffer buf = new StringBuffer("");
            for (int offset = 0; offset < b.length; offset++) {
                i = b[offset];
                if (i < 0)
                    i += 256;
                if (i < 16)
                    buf.append("0");
                buf.append(Integer.toHexString(i));
            }
            result = buf.toString();
//            System.out.println("MD5(" + sourceStr + ",32) = " + result);
         //   System.out.println("MD5(" + sourceStr + ",16) = " + buf.toString().substring(8, 24));
        } catch (NoSuchAlgorithmException e) {
//            System.out.println(e);
        }
        return result;
    }
    
    public static void main(String[] args) {
        String md5Str = md5("123456");
        System.out.println(md5Str);
    }
}

二、在eclipse里面自己编写HMACSHA256算法

package com.Base64;

import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;

public class HMACSHA256 {

    /**
     * 将加密后的字节数组转换成字符串
     *
     * @param b 字节数组
     * @return 字符串
     */
    public  static String byteArrayToHexString(byte[] b) {
        StringBuilder hs = new StringBuilder();
        String stmp;
        for (int n = 0; b!=null && n < b.length; n++) {
            stmp = Integer.toHexString(b[n] & 0XFF);
            if (stmp.length() == 1)
                hs.append('0');
            hs.append(stmp);
        }
        return hs.toString().toLowerCase();
    }
    /**
     * sha256_HMAC加密
     * @param message 消息
     * @param secret  秘钥
     * @return 加密后字符串
     */
    public static String sha256_HMAC(String message, String secret) {
        String hash = "";
        try {
            Mac sha256_HMAC = Mac.getInstance("HmacSHA256");
            SecretKeySpec secret_key = new SecretKeySpec(secret.getBytes(), "HmacSHA256");
            sha256_HMAC.init(secret_key);
            byte[] bytes = sha256_HMAC.doFinal(message.getBytes());
            hash = byteArrayToHexString(bytes);
        } catch (Exception e) {
            System.out.println("Error HmacSHA256 ===========" + e.getMessage());
        }
        return hash;
    }
    
    public static void main(String[] args) {
        String data = sha256_HMAC("123", "abc");
        System.out.println(data);
    }

}

三、在eclipse里面写好之后,导出来为jar包,命名为:base64.jar  放在jmeter/lib/ext中

1.md5方法就一个参数,就是需要加密的数据

2.sha256_HMAC方法接收两个参数,message:需要被加密的数据,secret:加密的秘钥

四、在jmeter测试计划底部library中添加该jar包,重启jmeter
新建http请求后,在下面加一个前置处理器:BeanShell PreProcessor
直接导入该jar包里面的java包,Md5Utils和HMACSHA256都在在com.Base64这个包里,直接引入,如果导入不了在jmeter的测试计划底部引入即可
插入如下代码:

import com.Base64.*;
//1.测试通过MD5进行加密
String md5Str = Md5Utils.md5("123456"); 
vars.put("loginPwd",md5Str);   //把加密后的内容赋值给到loginPwd变量
log.info(md5Str); //2.测试通过HMACSHA256进行加密 HMACSHA256 psSha256 = new HMACSHA256(); //调用HMACSHA256类的sha256_HMAC方法,进行hmacsha256加密 //通过abc秘钥对密码123456进行加密 String psStr=psSha256.sha256_HMAC("123456","abc"); log.info(psStr);

五、通过创建前置处理器beanshell脚本进行加密处理

六、对加密后的数据进行引用

文章来源:https://blog.csdn.net/weixin_39362573/article/details/132256319
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.niftyadmin.cn/n/4936762.html

相关文章

Redis原理简述

Redis原理简述 Redis 有哪些特性 1. 特性 key-value 型内存数据库单线程——原子化操作支持lua脚本发布与订阅可持久化逐出与过期……2. 持久化 RDB:经过压缩的二进制文件;fork子进程进行操作AOF:保存所有写命令;先写缓存再同步至AOF文件;文件过大时会触发AOF重写3. 过期…

【0.2】lubancat鲁班猫4远程ubuntu22.04.2 无需任何安装

环境 lubancat4鲁班猫4 (4G0)不带emmc 系统镜像ubuntu-22.04.2-desktop-arm64-lubancat-4.img 网络环境:有线网络与本win10电脑同意环境 操作步骤ubuntu正常开机登陆用户&#xff0c;连接好网络进入设置>网络查看设备当前局域网IP 如192.168.199.159进入设置>共享>远程…

布隆过滤器原理及应用

使用场景 适用于数据命中不高、 数据相对固定、 实时性低&#xff08;通常是数据集较大&#xff09; 的应用场景。比如&#xff1a; 解决缓存穿透&#xff1b;爬虫时记录已爬取的网页&#xff1b;记录黑名单&#xff1b; 原理 数据结构是一个bit数组&#xff0c;布隆过滤器…

Kotlin和Java互操作时的可空性

注&#xff1a;文中demo的kt版本是1.7.10 一、kotlin语言中的可空性设计 在Java语言中的NPE&#xff08;NullPointerException&#xff09;可以说非常常见&#xff0c;而且诟病已久。 kotlin做为后起之秀&#xff0c;在空指针的问题上进行了升级&#xff0c;即&#xff1…

arcgis pro3.0-3.0.1-3.0.2安装教程大全及安装包下载

一. 产品介绍&#xff1a; ArcGIS Pro 这一功能强大的单桌面 GIS 应用程序是一款功能丰富的软件&#xff0c;采用 ArcGIS Pro 用户社区提供的增强功能和创意进行开发。 ArcGIS Pro 支持 2D、3D 和 4D 模式下的数据可视化、高级分析和权威数据维护。 支持通过 Web GIS 在一系列 …

数学分析:曲线曲面积分

这一章还是很重要的&#xff0c;可以看到为什么dt1^dt2和dt1dt2是一样的。 可以看到&#xff0c;核心还是黎曼和&#xff0c;我们把两种微分的黎曼和都列出来&#xff0c;并且证明两个相等&#xff0c;即可。 这里要注意&#xff0c;微分形式的积分&#xff0c;在黎曼和的情况…

计网第一章

注意&#xff1a;计网知识点十分多&#xff0c;在本篇及后续博客主要记录个人认为比较重要的知识点。 1.计算机网络的基本概念 计算机网络就是自治的计算机互连起来的集合。计算机网络可以简称为网络&#xff0c;而互连网就是把许多网络连接起来&#xff0c;即网络的网络。 …

HTML详解连载(4)

HTML详解连载&#xff08;4&#xff09; 专栏链接 [link](http://t.csdn.cn/xF0H3)下面进行专栏介绍 开始喽CSS定义书写位置示例注意 CSS引入方式内部样式表&#xff1a;学习使用 外部演示表&#xff1a;开发使用代码示例行内样式代码示例 选择器作用基础选择器标签选择器举例特…