From 030849f7547e92a1c5779e4f071b1a98f07370b0 Mon Sep 17 00:00:00 2001 From: "junj2.liang" Date: Wed, 31 Aug 2022 17:57:20 +0800 Subject: [PATCH 1/2] =?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 --- .../com/sunyard/sge/database/SydApiSM4.java | 14 ++++++++------ src/test/java/test/LongDataTest.java | 19 ++++++++++++++++++- 2 files changed, 26 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/sunyard/sge/database/SydApiSM4.java b/src/main/java/com/sunyard/sge/database/SydApiSM4.java index caa62b2..13384be 100644 --- a/src/main/java/com/sunyard/sge/database/SydApiSM4.java +++ b/src/main/java/com/sunyard/sge/database/SydApiSM4.java @@ -21,10 +21,10 @@ public class SydApiSM4 { this.iKeyIndex = iKeyIndex; } - public void update(byte[] pcData) { + public byte[] update(byte[] pcData) { this.pcdataResult = pcData; if (null == pcData || pcData.length == 0) { - return; + return new byte[0]; } int plength = pcData.length; if (is_finished) { @@ -58,20 +58,22 @@ public class SydApiSM4 { bufferResult.put(bytes1); sourceWrap = bufferResult; } - byte[] bytes = api.SYD_SM4_LongData(iKeyIndex, pcdataResult, iPkgNum, iFlag); - iPkgNum = 2; + iPkgNum = 2; + return api.SYD_SM4_LongData(iKeyIndex, pcdataResult, iPkgNum, iFlag); + } else { if (16 > pcData.length + sourceWrap.array().length) { ByteBuffer bufferResult = ByteBuffer.allocate(sourceWrap.array().length + plength); bufferResult.put(SydSM4Mac.bytebuffer2ByteArray(sourceWrap)); bufferResult.put(pcData); sourceWrap = bufferResult; + return new byte[0]; } else if ((pcData.length + sourceWrap.array().length) % 16 == 0) { ByteBuffer bufferResult = ByteBuffer.allocate(sourceWrap.array().length + plength); bufferResult.put(SydSM4Mac.bytebuffer2ByteArray(sourceWrap)); bufferResult.put(pcData); byte[] bytes = SydSM4Mac.bytebuffer2ByteArray(bufferResult); - api.SYD_SM4_LongData(iKeyIndex, bytes, iPkgNum, iFlag); + return api.SYD_SM4_LongData(iKeyIndex, bytes, iPkgNum, iFlag); } else { ByteBuffer bufferResult = ByteBuffer.allocate(sourceWrap.array().length + plength); bufferResult.put(SydSM4Mac.bytebuffer2ByteArray(sourceWrap)); @@ -88,8 +90,8 @@ public class SydApiSM4 { ByteBuffer bufferResults = ByteBuffer.allocate(remainder); bufferResults.put(bytes1); sourceWrap = bufferResults; - api.SYD_SM4_LongData(iKeyIndex, pcdataResult, iPkgNum, iFlag); iPkgNum = 2; + return api.SYD_SM4_LongData(iKeyIndex, pcdataResult, iPkgNum, iFlag); } } } diff --git a/src/test/java/test/LongDataTest.java b/src/test/java/test/LongDataTest.java index 2458104..41b9e29 100644 --- a/src/test/java/test/LongDataTest.java +++ b/src/test/java/test/LongDataTest.java @@ -6,6 +6,7 @@ import org.junit.Assert; import org.junit.Before; import org.junit.Test; +import java.util.Arrays; import java.util.Random; public class LongDataTest { @@ -77,7 +78,7 @@ public class LongDataTest { int lucky = new Random().nextInt(4065); byte[] data = new byte[lucky]; System.out.println("len="+lucky); - new Random().nextBytes( data ); +// new Random().nextBytes( data ); sydApiMac.update(data); } @@ -111,6 +112,22 @@ public class LongDataTest { System.out.println(Util.bytes2HexString( enData ) ); } + @Test + public void case12(){ + for (int i =0 ; i < 1000; i ++) { + int lucky = new Random().nextInt(4065); + SydApiSM4 sydApiSM4 = api.initSM4(api, 1,1); + byte[] bytes = new byte[lucky]; + sydApiSM4.update(new byte[lucky]); + byte[] finish = sydApiSM4.finish(); + SydApiSM4 sydApiSM42 = api.initSM4(api, 1,0); + sydApiSM42.update(finish); + byte[] finish1 = sydApiSM42.finish(); + System.out.println("原始数据:"+Arrays.toString(bytes)+",\n"+"解密后数据:"+Arrays.toString(finish1)); + + } + + } } From c57655cee8e2c2ec142c870c14621db4a268b584 Mon Sep 17 00:00:00 2001 From: "junj2.liang" Date: Wed, 31 Aug 2022 18:23:03 +0800 Subject: [PATCH 2/2] =?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 --- src/main/java/com/sunyard/sge/database/SydApi.java | 2 +- .../java/com/sunyard/sge/database/SydApi4Database.java | 2 +- src/test/java/test/LongDataTest.java | 8 ++++---- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/sunyard/sge/database/SydApi.java b/src/main/java/com/sunyard/sge/database/SydApi.java index a916767..9bf698c 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 initSM4(SydApi sydApi, int iKeyIndex, int ende); + public SydApiSM4 initSM4( int iKeyIndex, int ende); public SydApiSM3 initSM3(); diff --git a/src/main/java/com/sunyard/sge/database/SydApi4Database.java b/src/main/java/com/sunyard/sge/database/SydApi4Database.java index 43e3998..a4f3d2e 100644 --- a/src/main/java/com/sunyard/sge/database/SydApi4Database.java +++ b/src/main/java/com/sunyard/sge/database/SydApi4Database.java @@ -768,7 +768,7 @@ public class SydApi4Database implements SydApi { @Override - public SydApiSM4 initSM4(SydApi sydApi, int iKeyIndex, int ende) { + public SydApiSM4 initSM4(int iKeyIndex, int ende) { return new SydApiSM4(this,iKeyIndex,ende); } diff --git a/src/test/java/test/LongDataTest.java b/src/test/java/test/LongDataTest.java index 41b9e29..3364cdf 100644 --- a/src/test/java/test/LongDataTest.java +++ b/src/test/java/test/LongDataTest.java @@ -89,7 +89,7 @@ public class LongDataTest { @Test public void case5(){ - SydApiSM4 sydApiSM4 = api.initSM4(api, 1,1); + SydApiSM4 sydApiSM4 = api.initSM4(1,1); byte[] enData = sydApiSM4.finish(); System.out.println(Util.bytes2HexString( enData ) ); Assert.assertArrayEquals( Util.hexString2Bytes("FF49F76AD3A71651FE1A8A9F0D2A689E"), enData ); @@ -97,7 +97,7 @@ public class LongDataTest { @Test public void case6(){ - SydApiSM4 sydApiSM4 = api.initSM4(api, 1,1); + SydApiSM4 sydApiSM4 = api.initSM4(1,1); for (int i =0 ; i < 1000; i ++) { int lucky = new Random().nextInt(4065); @@ -116,11 +116,11 @@ public class LongDataTest { public void case12(){ for (int i =0 ; i < 1000; i ++) { int lucky = new Random().nextInt(4065); - SydApiSM4 sydApiSM4 = api.initSM4(api, 1,1); + SydApiSM4 sydApiSM4 = api.initSM4( 1,1); byte[] bytes = new byte[lucky]; sydApiSM4.update(new byte[lucky]); byte[] finish = sydApiSM4.finish(); - SydApiSM4 sydApiSM42 = api.initSM4(api, 1,0); + SydApiSM4 sydApiSM42 = api.initSM4(1,0); sydApiSM42.update(finish); byte[] finish1 = sydApiSM42.finish(); System.out.println("原始数据:"+Arrays.toString(bytes)+",\n"+"解密后数据:"+Arrays.toString(finish1));