首页 > 系统相关 >在Eclipse将Java代码打包为jar用于jmeter BeanShell(HMAC_SHA1)加密

在Eclipse将Java代码打包为jar用于jmeter BeanShell(HMAC_SHA1)加密

时间:2023-10-13 16:55:24浏览次数:44  
标签:SHA1 Java String jar public static key data HMAC

Eclipse代码

import javax.crypto.Mac;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
import java.nio.charset.StandardCharsets;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;


public class HMAC_data {

public static void main(String[] args) {

//String valMD5 = HMAC_data.encrypt(HMAC_data.datas, HMAC_data.key, HMAC_data.HMAC_MD5);
//String MD5 = "MD5=";
//System.out.println(MD5+valMD5);

String valSha1 = HMAC_data.encrypt(HMAC_data.datas, HMAC_data.key, HMAC_data.HMAC_SHA1);
String SHA1 = "SHA1=";
System.out.println(SHA1+valSha1);

//String valSha256 = HMAC_data.encrypt(HMAC_data.datas, HMAC_data.key, HMAC_data.HMAC_SHA256);
//String SHA256 = "SHA256=";
//System.out.println(SHA256+valSha256);

//String valSha512 = HMAC_data.encrypt(HMAC_data.datas, HMAC_data.key, HMAC_data.HMAC_SHA512);
//String SHA512 = "SHA512=";
//System.out.println(SHA512+valSha512);

}
//加密数据data
public static final String datas = "Jinjie_zdh123Jinjie_zdh123";
//秘钥key
public static final String key = "83ba5ebdbf8a27e6175db676cb1d8652d3499c1c";
//加密方法
public static final String HMAC_SHA1 = "HmacSHA1";
public static final String HMAC_MD5 = "HmacMD5";
public static final String HMAC_SHA256 = "HmacSHA256";
public static final String HMAC_SHA512 = "HmacSHA512";


public static String encrypt(String input, String key, String algorithm) {
String cipher = "";
try {
byte[] data = key.getBytes(StandardCharsets.UTF_8);
//根据给定的字节数组构造一个密钥,第二个参数指定一个密钥的算法名称,生成HmacSHA1专属密钥
SecretKey secretKey = new SecretKeySpec(data, algorithm);

//生成一个指定Mac算法的Mac对象
Mac mac = Mac.getInstance(algorithm);
//用给定密钥初始化Mac对象
mac.init(secretKey);
byte[] text = input.getBytes(StandardCharsets.UTF_8);
byte[] encryptByte = mac.doFinal(text);
cipher = bytesToHexStr(encryptByte);
} catch (NoSuchAlgorithmException | InvalidKeyException e) {
e.printStackTrace();

}
return cipher;
}


/**
* byte数组转16进制字符串
*
* @param bytes byte数组
* @return hex字符串
*/
public static String bytesToHexStr(byte[] bytes) {
StringBuilder hexStr = new StringBuilder();
for (byte b : bytes) {
String hex = Integer.toHexString(b & 0xFF);
if (hex.length() == 1) {
hex = '0' + hex;
}
hexStr.append(hex);
}
return hexStr.toString();


}
}

 BeanShell引用

import HMAC_data.jar;

//加密数据
String datas = "${accountName}${password}";
//秘钥
String key = "${hash}";
//加密方法:"HmacSHA1","HmacMD5","HmacSHA256","HmacSHA512"
String HMAC_SHA1 = "HmacSHA1";
String valSha1 = HMAC_data.encrypt(datas,key,HMAC_SHA1);
//打印
System.out.println(valSha1);
//放入变量login_hash
vars.put("login_hash",valSha1)

标签:SHA1,Java,String,jar,public,static,key,data,HMAC
From: https://www.cnblogs.com/jinjie-test/p/17762544.html

相关文章

  • 简单工厂模式--Java实现+C++实现
    问题描述使用简单工厂模式模拟女娲(Nvwa)造人(Person),如果传入参数M,则返回一个Man对象,如果传入参数W,则返回一个Woman对象,如果传入参数R,则返回一个Robot对象。请用程序设计实现上述场景。问题实现用starUML画的相应的类图:然后就是代码实现:Java代码实现在Java里面,Person类相......
  • 将java程序,安装为windows服务,开机自启动
    借助WindowsServiceWrapper小工具,将java程序转换为Windows服务,在服务中心配置自启动,从而在开机时windows自行启动服务。WindowsServiceWrapper下载URL:https://github.com/winsw/winsw/releases如下图,为windows32位和64位的工具文件 32位:链接: https://pan.baidu.co......
  • java运行时数据区
    Java运行时数据区域  众所周知,Java虚拟机有自动内存管理机制,如果出现内存泄漏和溢出方面的问题,排查错误就必须要了解虚拟机是怎样使用内存的。包含:程序计数器(PC)、堆、本地方法栈、虚拟机栈、元空间  下图是JDK8之后的JVM内存布局。程序计数器(PC)内存中一块较小的空......
  • 配置Tomcat运行Java Web项目
    创建项目创建JavaWeb项目ctrl+shift+p打开搜索Maven原型,并选择从maven原型创建新项目或者按如下方式:选择从Maven原型创建Web项目从maven-archetype-webapp原型创建项目接着选择原型版本、输入包名、项目名、选择项目存放位置注意:到此需要按一下回车来继续输入Y或者回......
  • Java流(Stream)、文件(File)和IO
    Java流(Stream)、文件(File)和IOJava流(Stream)、文件(File)和IOjava.io包几乎包含了所有操作输入、输出需要的类所有这些流类流类代表了输入源和输出目标Java.io包中的流支持很多种格式比如:基本类型、对象、本地化字符集等等一个流可以理解为一个数据的序列输入流表示从一......
  • [JavaScript]扩展运算符
    顺便补充一点Array.reduce((prev,curv)=>{}, ori)的运用letarr1=[1,3,5,7,9]letarr2=[2,4,6,8,10]console.log(...arr1);//展开一个数组----->13579letarr3=[...arr1,...arr2]//连接数组//......
  • Java设计模式-策略模式-基于Spring实现
    1、策略模式1.1、概述策略模式是一种行为设计模式,它允许在运行时选择算法的行为。它将算法封装在独立的策略类中,使得它们可以相互替换,而不影响客户端代码。这种模式通过将算法的选择从客户端代码中分离出来,提供了更大的灵活性和可维护性。在Java中,策略模式的设计理念可以通过以......
  • Java多态及类初始化顺序
    多态多态是Java面向对象的三大特性之一,多态建立于封装和继承之上,指对于父类中定义的属性和方法被子类继承后,可以具有不同的数据类型或表现出不同的行为。可分为编译时多态和运行时多态,编译时多态是静态的,通过方法的重载体现,通过编译之后会产生不同的方法;运行时多态通过动态绑定......
  • Java SWT Image 图像 —— 透明度 alpha数组
    对于图像深度是2、4、8的图像,可以指定transparentPixel。对于直接图像,要使用alpha或者alpha数组,alpha值0到255,0表示完全透明的,数值越大表示越是不透明,255表示完全不透明,可以只是设置一个alpha值,作用于所有的像素点,也可以给所有的像素点设置自己的透明的值。 如: 的alpha的数组值为......
  • Java SWT Image 图像 —— mask
    原文链接:http://www.eclipse.org/articles/Article-SWT-images/graphics-resources.htmlPaletteDatapaletteData=newPaletteData(newRGB[]{newRGB(0,0,0),newRGB(255,255,255)});ImageDatasourceData=newImageData(32,32,1,paletteData);ImageDatamaskData=......