修改测试代码

This commit is contained in:
junj2.liang 2022-08-08 15:35:41 +08:00
parent 30087e7d53
commit 28c21ef734

View File

@ -36,30 +36,30 @@ public class LengthTest
byte[] bytes = api.SYD_SM4_ShortData(0, new byte[0], Consts.ECB_DEC); byte[] bytes = api.SYD_SM4_ShortData(0, new byte[0], Consts.ECB_DEC);
Arrays.toString(bytes); Arrays.toString(bytes);
//解密 pcData长度不为0 //解密 pcData长度不为0
byte[] bytes2 = api.SYD_SM4_ShortData(0, new byte[0], Consts.ECB_DEC); byte[] bytes2 = api.SYD_SM4_ShortData(0, new byte[16], Consts.ECB_DEC);
Arrays.toString(bytes2); Arrays.toString(bytes2);
} }
@Test @Test
public void syd_SM4_BatchDataTest(){ public void syd_SM4_BatchDataTest(){
// 密钥索引
int[] keyIdx = new int[]{ 0, 1, 2 }; int[] keyIdx = new int[]{ 0, 1, 2 };
// 测试数据 // 测试数据
List<byte[]> data2 = new ArrayList<>();
data2.add( new byte[8] );
data2.add( new byte[16] );
data2.add( new byte[1024] );
List<byte[]> data = new ArrayList<>(); List<byte[]> data = new ArrayList<>();
data.add( new byte[0] ); data.add( new byte[0] );
data.add( new byte[0] ); data.add( new byte[0] );
data.add( new byte[0] ); data.add( new byte[0] );
List<byte[]> data2 = new ArrayList<>();
data.add( new byte[0] ); // 解密 pcData长度为0
data.add( new byte[0] );
data.add( new byte[0] );
//解密 pcData长度为0
List<byte[]> orgDatas = api.SYD_SM4_BatchData( keyIdx , data, Consts.ECB_DEC ); List<byte[]> orgDatas = api.SYD_SM4_BatchData( keyIdx , data, Consts.ECB_DEC );
for (byte[] byte_1 :orgDatas) { for (byte[] byte_1 :orgDatas) {
System.out.printf("解密后数据", Arrays.toString(byte_1)); System.out.printf("解密后数据", Arrays.toString(byte_1));
} }
//解密 pcData长度不为0 //解密 pcData长度不为0
List<byte[]> orgDatas2 = api.SYD_SM4_BatchData( keyIdx , data2, Consts.ECB_DEC ); List<byte[]> encData = api.SYD_SM4_BatchData( keyIdx , data2, Consts.ECB_ENC );
List<byte[]> orgDatas2 = api.SYD_SM4_BatchData( keyIdx , encData, Consts.ECB_DEC );
for (byte[] byte_2 :orgDatas2) { for (byte[] byte_2 :orgDatas2) {
System.out.printf("解密后数据", Arrays.toString(byte_2)); System.out.printf("解密后数据", Arrays.toString(byte_2));
} }
@ -111,6 +111,56 @@ public class LengthTest
byte[] recv3 = api.SYD_SM4_LongData( keyIdx , buff, Consts.PkgNumMiddle, Consts.ECB_ENC); byte[] recv3 = api.SYD_SM4_LongData( keyIdx , buff, Consts.PkgNumMiddle, Consts.ECB_ENC);
enDataBuff.put( recv3 ); enDataBuff.put( recv3 );
} }
} }
byte[] enData = new byte[ enDataBuff.position() ];
System.arraycopy( enDataBuff.array(), 0, enData, 0, enData.length );
System.out.println( "EnData HEX=" + Util.bytes2HexString( enData ));
// 分包解密
// 密文数据
ByteBuffer deDataBuff = ByteBuffer.allocate( data.length + 16 );
{
int n = enData.length / pack;
int remainder = enData.length % pack;
if ( remainder > 0 ) {
n += 1;
} else {
remainder = pack;
}
for ( int i = 0 ; i < n ; i ++ ) {
byte[] buff = new byte[ pack ];
// 首包
if ( 0 == i ) {
System.arraycopy( enData, i * pack, buff, 0, pack );
byte[] recv3 = api.SYD_SM4_LongData( keyIdx , buff, Consts.PkgNumHead, Consts.ECB_DEC);
deDataBuff.put( recv3 );
continue;
}
// 尾包
if ( i == (n-1) ){
buff = new byte[ remainder ];
System.arraycopy( enData, i * pack, buff, 0, remainder );
byte[] recv3 = api.SYD_SM4_LongData( keyIdx , buff, Consts.PkgNumTail, Consts.ECB_DEC);
deDataBuff.put( recv3 );
continue;
}
// 中间包
System.arraycopy( enData, i * pack, buff, 0, pack );
byte[] recv3 = api.SYD_SM4_LongData( keyIdx , buff, Consts.PkgNumMiddle, Consts.ECB_DEC);
deDataBuff.put( recv3 );
}
}
byte[] deData = new byte[ deDataBuff.position() ];
System.arraycopy( deDataBuff.array(), 0, deData, 0, deData.length );
System.out.println( "DeData HEX=" + Util.bytes2HexString( deData ));
// 断言解密后和原文相同
Assert.assertArrayEquals( deData, data );
} }
} }