增加init/update/digest/finish长数据操作
This commit is contained in:
parent
d861855d79
commit
dcf47fa1bb
@ -98,69 +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;
|
||||
}
|
||||
|
||||
}
|
||||
@ -181,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;
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user