From 7844c61bd0c3c5d34aaca49a00b12069df1949ce Mon Sep 17 00:00:00 2001 From: "junj2.liang" Date: Wed, 31 Aug 2022 11:26:16 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0init/update/digest/finish?= =?UTF-8?q?=E9=95=BF=E6=95=B0=E6=8D=AE=E6=93=8D=E4=BD=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/sunyard/sge/database/SydApi.java | 2 +- .../sunyard/sge/database/SydApi4Database.java | 4 +- .../com/sunyard/sge/database/SydApiSM4.java | 7 +- .../com/sunyard/sge/database/SydSM4Mac.java | 7 +- src/test/java/test/test.java | 94 +++++++++++++++++++ 5 files changed, 105 insertions(+), 9 deletions(-) create mode 100644 src/test/java/test/test.java diff --git a/src/main/java/com/sunyard/sge/database/SydApi.java b/src/main/java/com/sunyard/sge/database/SydApi.java index c580204..0188647 100644 --- a/src/main/java/com/sunyard/sge/database/SydApi.java +++ b/src/main/java/com/sunyard/sge/database/SydApi.java @@ -272,7 +272,7 @@ public interface SydApi { ); - public SydApiSM4 initSydApiSM4(SydApi sydApi,int iFlag,int ende, int key); + public SydApiSM4 initSydApiSM4(SydApi sydApi,int iKeyIndex,int iFlag,int ende, int key); public SydApiSM3 initSydApiSM3(SydApi sydApi,int ende, int key); diff --git a/src/main/java/com/sunyard/sge/database/SydApi4Database.java b/src/main/java/com/sunyard/sge/database/SydApi4Database.java index acae937..1265555 100644 --- a/src/main/java/com/sunyard/sge/database/SydApi4Database.java +++ b/src/main/java/com/sunyard/sge/database/SydApi4Database.java @@ -768,9 +768,9 @@ public class SydApi4Database implements SydApi { @Override - public SydApiSM4 initSydApiSM4(SydApi sydApi,int iFlag,int ende, int key) { + public SydApiSM4 initSydApiSM4(SydApi sydApi,int iKeyIndex,int iFlag,int ende, int key) { - return new SydApiSM4(sydApi,iFlag,ende,key); + return new SydApiSM4(sydApi,iKeyIndex,iFlag,ende,key); } public SydApiSM3 initSydApiSM3(SydApi sydApi,int ende, int key) { diff --git a/src/main/java/com/sunyard/sge/database/SydApiSM4.java b/src/main/java/com/sunyard/sge/database/SydApiSM4.java index 5f09162..6a1d794 100644 --- a/src/main/java/com/sunyard/sge/database/SydApiSM4.java +++ b/src/main/java/com/sunyard/sge/database/SydApiSM4.java @@ -11,7 +11,7 @@ import java.util.List; public class SydApiSM4 { private SydApi api; - private int iKeyIndex=1; + private int iKeyIndex; private byte[] pcdataResult = new byte[0]; private int iPkgNum = 1; private int iFlag; @@ -22,11 +22,12 @@ public class SydApiSM4 { - public SydApiSM4(SydApi api, int key, int endeFlag,int iFlag) { + public SydApiSM4(SydApi api,int iKeyIndex, int key, int endeFlag,int iFlag) { this.api = api; this.key = key; this.endeFlag = endeFlag; this.iFlag = iFlag; + this.iKeyIndex = iKeyIndex; } public void update(byte[] pcData) { @@ -65,7 +66,7 @@ public class SydApiSM4 { bufferResult.put(bytes1); sourceWrap = bufferResult; } - byte[] bytes = api.SYD_SM4_LongData(iKeyIndex, pcData, iPkgNum, iFlag); + byte[] bytes = api.SYD_SM4_LongData(iKeyIndex, pcdataResult, iPkgNum, iFlag); iKeyIndex = 2; } else { if (16 > pcData.length + sourceWrap.array().length) { diff --git a/src/main/java/com/sunyard/sge/database/SydSM4Mac.java b/src/main/java/com/sunyard/sge/database/SydSM4Mac.java index a167a02..8cc3cd2 100644 --- a/src/main/java/com/sunyard/sge/database/SydSM4Mac.java +++ b/src/main/java/com/sunyard/sge/database/SydSM4Mac.java @@ -27,6 +27,9 @@ public class SydSM4Mac { } public SydSM4Mac update(byte[] pcData) { + if (null==pcData||0 == pcData.length) { + return this; + } int length = pcData.length; this.pcdataResult = pcData; if (is_finished) { @@ -35,9 +38,7 @@ public class SydSM4Mac { if (length > 4064) { throw new SydApiException(0); } - if (0 == length) { - return this; - } + if (length < 16) { ByteBuffer bufferResult = ByteBuffer.allocate(sourceWrap.array().length + length); bufferResult.put(sourceWrap); diff --git a/src/test/java/test/test.java b/src/test/java/test/test.java new file mode 100644 index 0000000..a07d8a2 --- /dev/null +++ b/src/test/java/test/test.java @@ -0,0 +1,94 @@ +package test; + +import com.sunyard.proto.Util; +import com.sunyard.sge.database.*; +import org.junit.Test; + +import java.nio.ByteBuffer; +import java.util.Random; + +public class test { + private SydApi api; + + @Test + public void test01(){ + SydApiBuilder builder = new SydApiBuilder( + new String[]{ "192.168.0.200" }, + new int[]{ 8889 }, + 10, + 15 + ); + Random random = new Random(); + int i = random.nextInt(4065); + System.out.println(i); + api = builder.build(); + SydApiSM3 sydApiSM3 = api.initSydApiSM3(api,1, 1); + SydSM4Mac sydApiMac = api.initSydSM4Mac(api, 1, 1,1); + SydApiSM4 sydApiSM4 = api.initSydApiSM4(api, 1,1, 1, 1); + + + + /** + * SM4Mac updata传0-4064随机长度 + * Random random = new Random(); + * int i = random.nextInt(4065); + * SydSM4Mac sydApiMac = api.initSydSM4Mac(api, 1, 1,1); + * sydApiMac.update(new byte[i]); + * System.out.println(sydApiMac.disget().getData()); + * + * SM4 updata传0-4064随机长度 + * Random random = new Random(); + * int i = random.nextInt(4065); + * SydApiSM4 sydApiSM4 = api.initSydApiSM4(api, 1,1, 1, 1); + * sydApiSM4.update(new byte[i]); + * System.out.println(Util.bytes2HexString(sydApiSM4.finish())); + * + * SM3 updata传0-4064随机长度 + * Random random = new Random(); + * int i = random.nextInt(4065); + * SydApiSM3 sydApiSM3 = api.initSydApiSM3(api,1, 1); + * sydApiSM3.update(new byte[i]); + * System.out.println(sydApiSM3.digest()); + * + * updata直接传空 + * SydApiSM3 sydApiSM3 = api.initSydApiSM3(api,1, 1); + * SydApiSM4 sydApiSM4 = api.initSydApiSM4(api, 1,1, 1, 1); + * SydSM4Mac sydApiMac = api.initSydSM4Mac(api, 1, 1,1); + * sydApiSM3.update(null); + * sydApiSM4.update(null); + * sydApiMac.update(null); + * + * SM3直接调用digest + * SydApiSM3 sydApiSM3 = api.initSydApiSM3(api,1, 1); + * String digest = sydApiSM3.digest(); + * System.out.println(digest); + * + * SM4直接调用finish + SydApiSM4 sydApiSM4 = api.initSydApiSM4(api, 1,1, 1, 1); + byte[] finish = sydApiSM4.finish(); + String s = Util.bytes2HexString(finish); + System.out.print( s); + + SM4Mac直接调用disget + SydSM4Mac sydSM4Mac = api.initSydSM4Mac(api, 1, 1,1); + LongDataReturn disget = sydSM4Mac.disget(); + System.out.println(disget.getData()); + **/ + +// SydApiSM4 sydApiSM4 = api.initSydApiSM4(api, 1,1, 1); +// sydApiSM4.update(new byte[4064]); +// SydSM4Mac update = api.initSydSM4Mac(api, 1, 2).update(new byte[]{1,2,3,4,5,6,7,8,9,10,11,12}); +// System.out.println(update); +// SydApiSM3 sydApiSM3 = api.initSydApiSM3(api,1, 1); +// sydApiSM3.update(new byte[12],0,null); +//// SydApiSM4 sydApiSM4 = api.initSydApiSM4(1, 1); +// for (int i = 0; i <2 ; i++) { +// if (i==0){ +// sydApiSM4.update(1,new byte[21],1,1); +// } +// if (i==1){ +// sydApiSM4.update(1,new byte[7],1,1); +// } +// } + } +}