diff --git a/src/main/java/com/sunyard/sge/database/SydApiSM4.java b/src/main/java/com/sunyard/sge/database/SydApiSM4.java index 0d385a1..8e24524 100644 --- a/src/main/java/com/sunyard/sge/database/SydApiSM4.java +++ b/src/main/java/com/sunyard/sge/database/SydApiSM4.java @@ -98,72 +98,14 @@ public class SydApiSM4 { } } else { - if (0 == sourceWrap.array().length) { - if (plength<16||plength/16<2){ - ByteBuffer bufferResult = ByteBuffer.allocate(sourceWrap.array().length + plength); - bufferResult.put(sourceWrap); - bufferResult.put(pcData); - sourceWrap = bufferResult; - return new byte[0]; - } - ByteBuffer buffer = ByteBuffer.wrap(pcData); - int remainder = plength % 16; - int intercept = plength - remainder - 16; - byte[] bytes = new byte[intercept]; - ByteBuffer byteBuffer = buffer.get(bytes, 0, intercept); - byte[] bytes1 = new byte[remainder]; - byteBuffer.get(bytes1); - byte[] bytes2 = new byte[16]; - ByteBuffer byte1 = buffer.get(bytes2,0,16); - dataResult=bytes2; - this.pcdataResult = bytes; - ByteBuffer bufferResult = ByteBuffer.allocate(sourceWrap.array().length + remainder); - bufferResult.put(bytes1); - sourceWrap = bufferResult; - - iPkgNum = 2; - - return api.SYD_SM4_LongData(iKeyIndex, pcdataResult, iPkgNum, iFlag); - - } else { - if (16 > pcData.length + sourceWrap.array().length - || - (pcData.length + sourceWrap.array().length)/16<2 - ) { - ByteBuffer bufferResult = ByteBuffer.allocate(sourceWrap.array().length + plength); - bufferResult.put(sourceWrap.array()); - 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(sourceWrap.array()); - bufferResult.put(pcData); - byte[] bytes = SydSM4Mac.bytebuffer2ByteArray(bufferResult); - return api.SYD_SM4_LongData(iKeyIndex, bytes, iPkgNum, iFlag); - } else { - ByteBuffer bufferResult = ByteBuffer.allocate(sourceWrap.array().length + plength); - bufferResult.put(sourceWrap.array()); - bufferResult.put(pcData); - byte[] bytes = SydSM4Mac.bytebuffer2ByteArray(bufferResult); - ByteBuffer buffer = ByteBuffer.wrap(bytes); - int remainder = bytes.length % 16; - int intercept = bytes.length - remainder - 16; - byte[] pcdataByte = new byte[intercept]; - ByteBuffer byteBuffer = buffer.get(pcdataByte, 0, intercept); - byte[] bytes1 = new byte[remainder]; - byteBuffer.get(bytes1); - byte[] bytes2 = new byte[16]; - ByteBuffer byteBuffer2 = buffer.get(bytes2, 0, 16); - this.dataResult = bytes2; - this.pcdataResult = pcdataByte; - ByteBuffer bufferResults = ByteBuffer.allocate(remainder); - bufferResults.put(bytes1); - sourceWrap = bufferResults; - iPkgNum = 2; - return api.SYD_SM4_LongData(iKeyIndex, pcdataResult, iPkgNum, iFlag); - } + if (pcData.length/16<2){ + return new byte[0]; } + int length=(pcData.length/16)-1; + byte[] bytes = new byte[16]; + System.arraycopy(pcData,length*16,bytes,0,16); + System.out.println(bytes); + return null; } } @@ -184,7 +126,7 @@ public class SydApiSM4 { ByteBuffer buffer = ByteBuffer.allocate(dataResult.length+sourceWrap.array().length); buffer.put(dataResult); buffer.put(sourceWrap.array()); - byte[] bytes = api.SYD_SM4_LongData(iKeyIndex,buffer.array(), iPkgNum, iFlag); + byte[] bytes = api.SYD_SM4_LongData(iKeyIndex,dataResult, iPkgNum, iFlag); sourceWrap = null; return bytes; }