方式1:使用前置处理器(JSR223或beanshell)加密
import java.security.KeyFactory import java.security.PublicKey import java.security.spec.X509EncodedKeySpec import javax.crypto.Cipher import java.util.Base64 // 假设publicKey变量包含了Base64编码的公钥字符串 String base64PublicKey = vars.get("publickey"); // 从JMeter变量中获取公钥 log.info("-----获取到的公钥为------: " + base64PublicKey); // 将Base64编码的公钥字符串解码为字节数组 byte[] encodedPublicKeyBytes = Base64.getDecoder().decode(base64PublicKey); // 使用X.509格式将公钥字节数组转换为KeySpec X509EncodedKeySpec publicKeySpec = new X509EncodedKeySpec(encodedPublicKeyBytes); // 获取RSA密钥工厂实例 KeyFactory kf = KeyFactory.getInstance("RSA"); // 生成PublicKey对象 PublicKey pubKey = kf.generatePublic(publicKeySpec); // 初始化Cipher对象,设置为加密模式,并使用"RSA/ECB/PKCS1Padding"作为转换模式(根据需要调整) Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding"); cipher.init(Cipher.ENCRYPT_MODE, pubKey); // 要加密的字符串 String dataToEncrypt = "123456"; // 加密字符串(需要转换为字节数组) // 注意:对于长字符串,你可能需要使用OAEPWithSHA-256AndMGF1Padding或分段加密 byte[] encryptedBytes = cipher.doFinal(dataToEncrypt.getBytes("UTF-8")); // 将加密后的字节数组转换为Base64字符串 String encryptedData = Base64.getEncoder().encodeToString(encryptedBytes); // 将加密后的数据存储在JMeter变量中以便后续使用 vars.put("encryptedValue", encryptedData); // 输出加密后的数据到JMeter日志中(可选) log.info("------加密后的密文为-----: " + encryptedData);
方法2:通过后端开发加密接口获取RSA加密后的结果,详看:https://www.cnblogs.com/sheepboy/p/17511998.html
标签:公钥,加密,Base64,RSA,Cipher,RAS,测试,import From: https://www.cnblogs.com/sheepboy/p/18184237