From 8045e91bcc5d9838ff4064e530f13853f03edabf Mon Sep 17 00:00:00 2001 From: "junj2.liang" Date: Wed, 31 Aug 2022 17:23:02 +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 | 4 ++-- .../com/sunyard/sge/database/SydSM4Mac.java | 20 +++++++++++-------- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/src/main/java/com/sunyard/sge/database/SydApiSM4.java b/src/main/java/com/sunyard/sge/database/SydApiSM4.java index fedc62d..cf06759 100644 --- a/src/main/java/com/sunyard/sge/database/SydApiSM4.java +++ b/src/main/java/com/sunyard/sge/database/SydApiSM4.java @@ -68,13 +68,13 @@ public class SydApiSM4 { sourceWrap = bufferResult; } else if ((pcData.length + sourceWrap.array().length) % 16 == 0) { ByteBuffer bufferResult = ByteBuffer.allocate(sourceWrap.array().length + plength); - bufferResult.put(sourceWrap); + bufferResult.put(SydSM4Mac.bytebuffer2ByteArray(sourceWrap)); bufferResult.put(pcData); byte[] bytes = SydSM4Mac.bytebuffer2ByteArray(bufferResult); api.SYD_SM4_LongData(iKeyIndex, bytes, iPkgNum, iFlag); } else { ByteBuffer bufferResult = ByteBuffer.allocate(sourceWrap.array().length + plength); - bufferResult.put(sourceWrap); + bufferResult.put(SydSM4Mac.bytebuffer2ByteArray(sourceWrap)); bufferResult.put(pcData); byte[] bytes = SydSM4Mac.bytebuffer2ByteArray(bufferResult); ByteBuffer buffer = ByteBuffer.wrap(bytes); diff --git a/src/main/java/com/sunyard/sge/database/SydSM4Mac.java b/src/main/java/com/sunyard/sge/database/SydSM4Mac.java index 342a309..06fc0a1 100644 --- a/src/main/java/com/sunyard/sge/database/SydSM4Mac.java +++ b/src/main/java/com/sunyard/sge/database/SydSM4Mac.java @@ -78,14 +78,18 @@ public class SydSM4Mac { iPkgNum = 2; } } else { - if (16 > pcData.length + sourceWrap.array().length) { - ByteBuffer bufferResult = ByteBuffer.allocate(sourceWrap.array().length + length); + if (16 > (pcData.length + sourceWrap.array().length)) { + ByteBuffer bufferResult = ByteBuffer.allocate(sourceWrap.array().length + pcData.length); bufferResult.put(sourceWrap); bufferResult.put(pcData); sourceWrap = bufferResult; - } else if ((pcData.length + sourceWrap.array().length) % 16 == 0) { - ByteBuffer bufferResult = ByteBuffer.allocate(sourceWrap.array().length + length); - bufferResult.put(sourceWrap); + } + + else if (16<=(pcData.length + sourceWrap.array().length)&&(pcData.length + sourceWrap.array().length) % 16 == 0) { + int k2 = sourceWrap.array().length+pcData.length; + ByteBuffer bufferResult = ByteBuffer.allocate(sourceWrap.array().length + pcData.length); + byte[] bytes1 = bytebuffer2ByteArray(sourceWrap); + bufferResult.put(bytes1); bufferResult.put(pcData); byte[] bytes = SydSM4Mac.bytebuffer2ByteArray(bufferResult); if (null == this.pcMac || "".equals(this.pcMac)) { @@ -99,7 +103,7 @@ public class SydSM4Mac { } } else { ByteBuffer bufferResult = ByteBuffer.allocate(sourceWrap.array().length + length); - bufferResult.put(sourceWrap); + bufferResult.put(bytebuffer2ByteArray(sourceWrap)); bufferResult.put(pcData); byte[] bytes = SydSM4Mac.bytebuffer2ByteArray(bufferResult); ByteBuffer buffer = ByteBuffer.wrap(bytes); @@ -126,8 +130,6 @@ public class SydSM4Mac { } return this; } - - public LongDataReturn disget() { if (is_finished) { @@ -146,6 +148,7 @@ public class SydSM4Mac { LongDataReturn stringBooleanLongDataReturn = api.SYD_SM4Mac_LongData(iKeyIndex, this.pcdataResult, iPkgNum, pcProcData, pcMac); return stringBooleanLongDataReturn; } + } public static byte[] bytebuffer2ByteArray(ByteBuffer buffer) { @@ -161,4 +164,5 @@ public class SydSM4Mac { } return bytes; } + }