diff --git a/src/test/java/test/LongDataTest.java b/src/test/java/test/LongDataTest.java index 0b4ed09..dd1523b 100644 --- a/src/test/java/test/LongDataTest.java +++ b/src/test/java/test/LongDataTest.java @@ -108,9 +108,6 @@ public class LongDataTest { } - - - @Test public void case5(){ SydApiSM4 sydApiSM4 = api.initSM4(1,1); @@ -141,17 +138,63 @@ public class LongDataTest { for (int i =0 ; i < 1000; i ++) { int lucky = new Random().nextInt(4065); SydApiSM4 sydApiSM4 = api.initSM4( 1,1); - byte[] bytes = new byte[lucky]; + byte[] inData = new byte[lucky]; sydApiSM4.update(new byte[lucky]); - byte[] finish = sydApiSM4.finish(); + byte[] enData = sydApiSM4.finish(); + + + SydApiSM4 sydApiSM42 = api.initSM4(1,0); - sydApiSM42.update(finish); - byte[] finish1 = sydApiSM42.finish(); - System.out.println("原始数据:"+Arrays.toString(bytes)+",\n"+"解密后数据:"+Arrays.toString(finish1)); + sydApiSM42.update(enData); + byte[] deData = sydApiSM42.finish(); + Assert.assertArrayEquals( deData , inData); } - } + @Test + public void sm4(){ + + int max = 1; + SydApiSM4 en = api.initSM4( 1,1); + SydApiSM4 de = api.initSM4(1,0); + + ByteBuffer inData = ByteBuffer.allocate( max * 4065 ); + ByteBuffer enData = ByteBuffer.allocate( max * 4065 + 16); + ByteBuffer deData = ByteBuffer.allocate( max * 4065 ); + + for (int i =0 ; i < max; i ++) { + int lucky = new Random().nextInt(4065); + byte[] data = new byte[lucky]; + inData.put( data ); + enData.put( en.update(data) ); + } + enData.put( en.finish() ); + + System.out.println("原文=" + inData.position() ); + System.out.println("密文=" + enData.position() ); + enData.flip(); + + for (int i = 0 ; i < max; i ++) { + int lucky = new Random().nextInt(4065); + byte[] data = new byte[lucky]; + enData.get( data ); + if ( enData.position() + lucky >= enData.limit() ) { + // 到头了 + data = new byte[enData.limit() - enData.position()]; + deData.put( en.update(data) ); + } else { + deData.put( en.update(data) ); + } + } + if ( enData.position() < enData.limit() ){ + // 没到头 + byte[] data = new byte[enData.limit() - enData.position()]; + deData.put( en.update(data) ); + } + + deData.put( de.finish() ); + Assert.assertArrayEquals( deData.array() , inData.array()); + } }