From 18aa75787142118a32925322f183b75eee7bc753 Mon Sep 17 00:00:00 2001 From: cheney Date: Wed, 3 Jun 2026 17:23:41 +0800 Subject: [PATCH] =?UTF-8?q?=E6=80=A7=E8=83=BD=E6=B5=8B=E8=AF=95=E4=BB=A3?= =?UTF-8?q?=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/test/java/cmbpoc/FunctionTest.java | 6 +-- src/test/java/cmbpoc/JmeterTest.java | 59 ++++++++++++++++++++++++++ 2 files changed, 62 insertions(+), 3 deletions(-) diff --git a/src/test/java/cmbpoc/FunctionTest.java b/src/test/java/cmbpoc/FunctionTest.java index 026024d..aa40682 100644 --- a/src/test/java/cmbpoc/FunctionTest.java +++ b/src/test/java/cmbpoc/FunctionTest.java @@ -19,7 +19,7 @@ public class FunctionTest { private byte[] orgData = new byte[1024]; private byte[] orgData2K = new byte[ 2 * 1024 ]; private byte[] orgData2M = new byte[ 2 * 1024 * 1024 ]; - private byte[] orgData10M = new byte[ 4 * 1024 * 1024 - 1024]; + private byte[] orgData10M = new byte[ 10 * 1024 * 1024 ]; private String sign; @Before @@ -130,8 +130,8 @@ public class FunctionTest { public void SYD_SM2_Encrypt_10M(){ byte[] enData = this.api.SYD_SM2Encrypt(publicKey4Ende, orgData10M); System.out.println("密文=" + Util.bytes2HexString(enData)); - byte[] deData = this.api.SYD_SM2Decrypt(privateKey4Ende, enData); - Assert.assertArrayEquals(orgData10M, deData); +// byte[] deData = this.api.SYD_SM2Decrypt(privateKey4Ende, enData); +// Assert.assertArrayEquals(orgData10M, deData); } } diff --git a/src/test/java/cmbpoc/JmeterTest.java b/src/test/java/cmbpoc/JmeterTest.java index eed2fca..2309c00 100644 --- a/src/test/java/cmbpoc/JmeterTest.java +++ b/src/test/java/cmbpoc/JmeterTest.java @@ -1,34 +1,87 @@ package cmbpoc; +import com.sunyard.proto.Util; import org.apache.jmeter.config.Arguments; import org.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient; import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext; import org.apache.jmeter.samplers.SampleResult; +import racal.sunyard.main.SydApi4j; + +import java.util.Random; public class JmeterTest extends AbstractJavaSamplerClient { private byte[] publicKey; private byte[] plainData; + private byte[] encryptedData; private int sleep = 1; + private byte[] privateKey4Ende; + private byte[] publicKey4Ende; + + private String ip ; + private int port; + private int timeout; + private String ip2 ; + + private ThreadLocal api; + @Override public Arguments getDefaultParameters() { Arguments params = new Arguments(); params.addArgument("function", "sleep"); params.addArgument("sleep", "1"); + params.addArgument("plainDataLen", "1024"); + params.addArgument("publicKey4Ende", "", "加密用的公钥"); + params.addArgument("privateKey4Ende", "", "解密用的公钥"); + params.addArgument("ip", "192.168.100.145"); + params.addArgument("ip2", "172.1.41.96"); + params.addArgument("port", "8889"); + params.addArgument("timeout", "3000"); return params; } @Override public void setupTest(JavaSamplerContext context) { + // 加密密钥对 + String publicKey4Ende = context.getParameter("publicKey4Ende"); + if ( null != publicKey4Ende && !publicKey4Ende.isEmpty()) { + this.publicKey4Ende = Util.hexString2Bytes(publicKey4Ende); + } + String privateKey4Ende = context.getParameter("privateKey4Ende"); + if ( null != privateKey4Ende && !privateKey4Ende.isEmpty()) { + this.privateKey4Ende = Util.hexString2Bytes(privateKey4Ende); + } + + // 原始数据 + int plainDataLen = context.getIntParameter("plainDataLen"); + plainData = new byte[plainDataLen]; + new Random().nextBytes(plainData); + System.out.println("原始数据长度:" + plainDataLen); + // 校准测试 sleep = context.getIntParameter("sleep", 1); + // api + ip = context.getParameter("ip"); + ip2 = context.getParameter("ip2"); + port = context.getIntParameter("port"); + timeout = context.getIntParameter("timeout"); + api = new ThreadLocal() { + @Override + public SydApi4j initialValue() { + return (SydApi4j) new SydApi4j().connect(ip, port, null, timeout); + } + }; + // 线程开始时准备解密、验签数据 String function = context.getParameter("function"); switch (function) { + case "SYD_SM2_Decrypt": + this.encryptedData = this.api.get().SYD_SM2Encrypt(this.publicKey4Ende, this.plainData); + break; case "SYD_SM2_Sign": break; default: @@ -46,6 +99,12 @@ public class JmeterTest extends AbstractJavaSamplerClient { result.sampleStart(); // 开始计时 try { switch (function) { + case "SYD_SM2_Encrypt": + this.api.get().SYD_SM2Encrypt(privateKey4Ende, this.plainData); + break; + case "SYD_SM2_Decrypt": + this.api.get().SYD_SM2Decrypt(privateKey4Ende, this.encryptedData); + break; case "SYD_SM2_Sign": break; case "sleep":