From 030849f7547e92a1c5779e4f071b1a98f07370b0 Mon Sep 17 00:00:00 2001 From: "junj2.liang" Date: Wed, 31 Aug 2022 17:57:20 +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 --- .../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)); + + } + + } }