diff --git a/doc/构建文档.docx b/doc/构建文档.docx new file mode 100644 index 0000000..4646b87 Binary files /dev/null and b/doc/构建文档.docx differ diff --git a/src/main/java/com/sunyard/sge/database/ISM3.java b/src/main/java/com/sunyard/sge/database/ISM3.java index bfa739d..d2352f6 100644 --- a/src/main/java/com/sunyard/sge/database/ISM3.java +++ b/src/main/java/com/sunyard/sge/database/ISM3.java @@ -2,5 +2,5 @@ package com.sunyard.sge.database; public interface ISM3 { public void update(byte[] pcData); - public String digest(); + public byte[] digest(); } diff --git a/src/main/java/com/sunyard/sge/database/ISM4Mac.java b/src/main/java/com/sunyard/sge/database/ISM4Mac.java index f227d0c..84f4cdc 100644 --- a/src/main/java/com/sunyard/sge/database/ISM4Mac.java +++ b/src/main/java/com/sunyard/sge/database/ISM4Mac.java @@ -2,6 +2,6 @@ package com.sunyard.sge.database; public interface ISM4Mac { public void update(byte[] pcData); - public String digest(); - public boolean checkDigest(String mac); + public byte[] digest(); + public boolean checkDigest(byte[] mac); } diff --git a/src/main/java/com/sunyard/sge/database/SydApi.java b/src/main/java/com/sunyard/sge/database/SydApi.java index 854f25a..21c2369 100644 --- a/src/main/java/com/sunyard/sge/database/SydApi.java +++ b/src/main/java/com/sunyard/sge/database/SydApi.java @@ -92,7 +92,7 @@ public interface SydApi { * @param pcData:输入。原始数据。 * @return 哈希值(固定长度32字节)转HEX 字符串格式 */ - String SYD_SM3_Hash_ShortData( + byte[] SYD_SM3_Hash_ShortData( byte[] pcData ); @@ -110,10 +110,10 @@ public interface SydApi { * procData:过程数据 (包序号为1或2时有值)字符串格式 * data:哈希值(固定长度32字节)转HEX 字符串格式 */ - LongDataReturn SYD_SM3_Hash_LongData( + LongDataReturn SYD_SM3_Hash_LongData( byte[] pcData, int iPkgNum, - String pcProcData + byte[] pcProcData ); @@ -209,11 +209,11 @@ public interface SydApi { * 属性 procData 过程数据 (包序号为1或2时有值)字符串, * 属性 data 输出的mac值(固定长度16字节)HEX 字符串 */ - LongDataReturn SYD_SM4Mac_LongData( + LongDataReturn SYD_SM4Mac_LongData( int iKeyIndex, byte[] pcData, int iPkgNum, - String pcProcData + byte[] pcProcData ); @@ -232,12 +232,12 @@ public interface SydApi { * 属性 procData 过程数据 (包序号为1或2时有值)字符串 * 属性 data 输出的mac校验结果。Boolean 类型,true表示校验成功,false 表示校验失败。 */ - LongDataReturn SYD_SM4Mac_LongData( + LongDataReturn SYD_SM4Mac_LongData( int iKeyIndex, byte[] pcData, int iPkgNum, - String pcProcData, - String pcMac + byte[] pcProcData, + byte[] pcMac ); diff --git a/src/main/java/com/sunyard/sge/database/SydApiBaseFunction.java b/src/main/java/com/sunyard/sge/database/SydApiBaseFunction.java index 25cdea6..af4a8a9 100644 --- a/src/main/java/com/sunyard/sge/database/SydApiBaseFunction.java +++ b/src/main/java/com/sunyard/sge/database/SydApiBaseFunction.java @@ -121,7 +121,7 @@ public class SydApiBaseFunction implements SydApi { } @Override - public String SYD_SM3_Hash_ShortData(byte[] pcData) { + public byte[] SYD_SM3_Hash_ShortData(byte[] pcData) { if (LogFactory.iLogLevel == 3) { log.debug("SYD_SM3_Hash_ShortData方法接收参数:pcData:{}", Arrays.toString(pcData)); } @@ -149,7 +149,7 @@ public class SydApiBaseFunction implements SydApi { try { byte[] hash = api.SYD_SM3_LongData(pcData, null, 0); log.debug("api.SYD_SM3_LongData方法返回值:{}", Arrays.toString(hash)); - return Util.bytes2HexString(hash); + return hash; } catch (SydApiException e) { le = e; if (e.getRetCode() < 0) { @@ -163,7 +163,7 @@ public class SydApiBaseFunction implements SydApi { try { byte[] hash = api.SYD_SM3_LongData(pcData, null, 0); log.debug("api.SYD_SM3_LongData方法返回值:{}", Arrays.toString(hash)); - return Util.bytes2HexString(hash); + return hash; } catch (SydApiException e) { le = e; if (e.getRetCode() < 0) { @@ -182,7 +182,7 @@ public class SydApiBaseFunction implements SydApi { } @Override - public LongDataReturn SYD_SM3_Hash_LongData(byte[] pcData, int iPkgNum, String pcProcData) { + public LongDataReturn SYD_SM3_Hash_LongData(byte[] pcData, int iPkgNum, byte[] pcProcData) { Logger log = LogFactory.getLogger(); if (LogFactory.iLogLevel == 3) { log.debug("SYD_SM3_Hash_LongData 方法接收参数:pcData:{},iPkgNum:{},pcProcData:{}", Arrays.toString(pcData), iPkgNum, pcProcData); @@ -193,7 +193,7 @@ public class SydApiBaseFunction implements SydApi { } byte[] procData = null; if (2 == iPkgNum || 3 == iPkgNum) { - procData = Util.hexString2Bytes(pcProcData); + procData = pcProcData; log.debug("Util.hexString2Bytes方法返回值:{}", Arrays.toString(procData)); } @@ -209,9 +209,9 @@ public class SydApiBaseFunction implements SydApi { byte[] hash = api.SYD_SM3_LongData(pcData, procData, iPkgNum); log.debug("api.SYD_SM3_LongData方法返回值:{}", Arrays.toString(hash)); if (0 == iPkgNum || 3 == iPkgNum) { - return new LongDataReturn(null, Util.bytes2HexString(hash)); + return new LongDataReturn(null, hash); } else { - return new LongDataReturn(Util.bytes2HexString(hash), null); + return new LongDataReturn(hash, null); } } catch (SydApiException e) { le = e; @@ -227,9 +227,9 @@ public class SydApiBaseFunction implements SydApi { byte[] hash = api.SYD_SM3_LongData(pcData, procData, iPkgNum); log.debug("api.SYD_SM3_LongData方法返回值:{}", Arrays.toString(hash)); if (0 == iPkgNum || 3 == iPkgNum) { - return new LongDataReturn(null, Util.bytes2HexString(hash)); + return new LongDataReturn(null, hash); } else { - return new LongDataReturn(Util.bytes2HexString(hash), null); + return new LongDataReturn(hash, null); } } catch (SydApiException e) { le = e; @@ -669,7 +669,7 @@ public class SydApiBaseFunction implements SydApi { } @Override - public LongDataReturn SYD_SM4Mac_LongData(int iKeyIndex, byte[] pcData, int iPkgNum, String pcProcData) { + public LongDataReturn SYD_SM4Mac_LongData(int iKeyIndex, byte[] pcData, int iPkgNum, byte[] pcProcData) { Logger log = LogFactory.getLogger(); if (LogFactory.iLogLevel == 3) { log.debug("SYD_SM4Mac_LongData方法接收参数:iKeyIndex:{},pcData:{},iPkgNum:{},pcProcData:{}", iKeyIndex, Arrays.toString(pcData), iPkgNum, pcProcData); @@ -684,7 +684,7 @@ public class SydApiBaseFunction implements SydApi { // 仅一包 和 第一包 忽略 pcProcData 参数 if (Consts.PkgNumAll != iPkgNum && Consts.PkgNumHead != iPkgNum) { - iv = pcProcData.getBytes(); + iv = pcProcData; } SydApiException le = new SydApiException(-1); updateLastUseTime(); @@ -706,10 +706,10 @@ public class SydApiBaseFunction implements SydApi { // 仅一包 和 尾包 返回最终结果 if (Consts.PkgNumAll == iPkgNum || Consts.PkgNumTail == iPkgNum) { - return new LongDataReturn<>(null, Util.bytes2HexString(mac)); + return new LongDataReturn<>(null, mac); } else { // 返回中间值 - return new LongDataReturn<>(Util.bytes2HexString(mac), null); + return new LongDataReturn<>(mac, null); } } catch (SydApiException e) { @@ -735,10 +735,10 @@ public class SydApiBaseFunction implements SydApi { // 仅一包 和 尾包 返回最终结果 if (Consts.PkgNumAll == iPkgNum || Consts.PkgNumTail == iPkgNum) { - return new LongDataReturn<>(null, Util.bytes2HexString(mac)); + return new LongDataReturn<>(null, mac); } else { // 返回中间值 - return new LongDataReturn<>(Util.bytes2HexString(mac), null); + return new LongDataReturn<>(mac, null); } } catch (SydApiException e) { @@ -759,13 +759,13 @@ public class SydApiBaseFunction implements SydApi { } @Override - public LongDataReturn SYD_SM4Mac_LongData(int iKeyIndex, byte[] pcData, int iPkgNum, String pcProcData, String pcMac) { + public LongDataReturn SYD_SM4Mac_LongData(int iKeyIndex, byte[] pcData, int iPkgNum, byte[] pcProcData, byte[] pcMac) { Logger log = LogFactory.getLogger(); if (LogFactory.iLogLevel == 3) { - log.debug("SYD_SM4Mac_LongData方法接收参数:iKeyIndex:{},pcData:{},iPkgNum:{},pcProcData:{}", iKeyIndex, Arrays.toString(pcData), iPkgNum, pcProcData, pcMac); + log.debug("SYD_SM4Mac_LongData方法接收参数:iKeyIndex:{}, iPkgNum:{},pcProcData:{}", iKeyIndex, iPkgNum, pcProcData); } updateLastUseTime(); - LongDataReturn ret = SYD_SM4Mac_LongData(iKeyIndex, pcData, iPkgNum, pcProcData); + LongDataReturn ret = SYD_SM4Mac_LongData(iKeyIndex, pcData, iPkgNum, pcProcData); // 仅一包 和 尾包 返回最终结果 if (Consts.PkgNumAll == iPkgNum || Consts.PkgNumTail == iPkgNum) { diff --git a/src/main/java/com/sunyard/sge/database/SydApiLongLinkWrap.java b/src/main/java/com/sunyard/sge/database/SydApiLongLinkWrap.java index 2640bec..4dc8742 100644 --- a/src/main/java/com/sunyard/sge/database/SydApiLongLinkWrap.java +++ b/src/main/java/com/sunyard/sge/database/SydApiLongLinkWrap.java @@ -40,10 +40,10 @@ public class SydApiLongLinkWrap implements SydApi { } @Override - public String SYD_SM3_Hash_ShortData(byte[] pcData) { - FutureTask task = builder.getLongLinkWorks().fTask(new Callable() { + public byte[] SYD_SM3_Hash_ShortData(byte[] pcData) { + FutureTask task = builder.getLongLinkWorks().fTask(new Callable() { @Override - public String call() throws Exception { + public byte[] call() throws Exception { return builder.get().SYD_SM3_Hash_ShortData(pcData); } }); @@ -58,10 +58,10 @@ public class SydApiLongLinkWrap implements SydApi { } @Override - public LongDataReturn SYD_SM3_Hash_LongData(byte[] pcData, int iPkgNum, String pcProcData) { - FutureTask> task = builder.getLongLinkWorks().fTask(new Callable>() { + public LongDataReturn SYD_SM3_Hash_LongData(byte[] pcData, int iPkgNum, byte[] pcProcData) { + FutureTask> task = builder.getLongLinkWorks().fTask(new Callable>() { @Override - public LongDataReturn call() throws Exception { + public LongDataReturn call() throws Exception { return builder.get().SYD_SM3_Hash_LongData(pcData, iPkgNum, pcProcData); } }); @@ -113,10 +113,10 @@ public class SydApiLongLinkWrap implements SydApi { @Override - public LongDataReturn SYD_SM4Mac_LongData(int iKeyIndex, byte[] pcData, int iPkgNum, String pcProcData) { - FutureTask> task = builder.getLongLinkWorks().fTask(new Callable>() { + public LongDataReturn SYD_SM4Mac_LongData(int iKeyIndex, byte[] pcData, int iPkgNum, byte[] pcProcData) { + FutureTask> task = builder.getLongLinkWorks().fTask(new Callable>() { @Override - public LongDataReturn call() throws Exception { + public LongDataReturn call() throws Exception { return builder.get().SYD_SM4Mac_LongData(iKeyIndex, pcData, iPkgNum, pcProcData); } }); @@ -131,10 +131,10 @@ public class SydApiLongLinkWrap implements SydApi { } @Override - public LongDataReturn SYD_SM4Mac_LongData(int iKeyIndex, byte[] pcData, int iPkgNum, String pcProcData, String pcMac) { - FutureTask> task = builder.getLongLinkWorks().fTask(new Callable>() { + public LongDataReturn SYD_SM4Mac_LongData(int iKeyIndex, byte[] pcData, int iPkgNum, byte[] pcProcData, byte[] pcMac) { + FutureTask> task = builder.getLongLinkWorks().fTask(new Callable>() { @Override - public LongDataReturn call() throws Exception { + public LongDataReturn call() throws Exception { return builder.get().SYD_SM4Mac_LongData(iKeyIndex, pcData, iPkgNum, pcProcData, pcMac); } }); diff --git a/src/main/java/com/sunyard/sge/database/SydSM3.java b/src/main/java/com/sunyard/sge/database/SydSM3.java index bafd760..312af03 100644 --- a/src/main/java/com/sunyard/sge/database/SydSM3.java +++ b/src/main/java/com/sunyard/sge/database/SydSM3.java @@ -6,7 +6,7 @@ import com.sunyard.SydApiException; public class SydSM3 implements ISM3 { private boolean is_finished = false; private SydApi api; - private String pcProcData; + private byte[] pcProcData; public SydSM3(SydApi sydApi) { this.api = sydApi; @@ -23,24 +23,24 @@ public class SydSM3 implements ISM3 { throw new IllegalArgumentException(); } if (null == this.pcProcData) { - LongDataReturn stringStringLongDataReturn = api.SYD_SM3_Hash_LongData(pcData, 1, null); + LongDataReturn stringStringLongDataReturn = api.SYD_SM3_Hash_LongData(pcData, 1, null); this.pcProcData = stringStringLongDataReturn.getProcData(); } else { - LongDataReturn stringStringLongDataReturn = api.SYD_SM3_Hash_LongData(pcData, 2, pcProcData); + LongDataReturn stringStringLongDataReturn = api.SYD_SM3_Hash_LongData(pcData, 2, pcProcData); this.pcProcData = stringStringLongDataReturn.getProcData(); } } - public String digest() { + public byte[] digest() { if (is_finished) { throw new SydApiException(0x8007); } this.is_finished = true; if (null == pcProcData) { - LongDataReturn stringStringLongDataReturn = api.SYD_SM3_Hash_LongData(new byte[0], 0, null); + LongDataReturn stringStringLongDataReturn = api.SYD_SM3_Hash_LongData(new byte[0], 0, null); return stringStringLongDataReturn.getData(); } else { - LongDataReturn stringStringLongDataReturn = api.SYD_SM3_Hash_LongData(new byte[0], 3, pcProcData); + LongDataReturn stringStringLongDataReturn = api.SYD_SM3_Hash_LongData(new byte[0], 3, pcProcData); return stringStringLongDataReturn.getData(); } } diff --git a/src/main/java/com/sunyard/sge/database/SydSM4Mac.java b/src/main/java/com/sunyard/sge/database/SydSM4Mac.java index 99eb0ea..d78b23b 100644 --- a/src/main/java/com/sunyard/sge/database/SydSM4Mac.java +++ b/src/main/java/com/sunyard/sge/database/SydSM4Mac.java @@ -4,14 +4,15 @@ import com.sunyard.SydApiException; import com.sunyard.sge.bytes.BytesQueue; import java.nio.ByteBuffer; +import java.util.Arrays; public class SydSM4Mac implements ISM4Mac { private final SydApi api; private final int iKeyIndex; private int iPkgNum = 1; - private String pcProcData; + private byte[] pcProcData; private boolean is_finished; - private String pcMac; + private byte[] pcMac; private BytesQueue queue = new BytesQueue(); public SydSM4Mac(SydApi api, int iKeyIndex) { @@ -43,11 +44,11 @@ public class SydSM4Mac implements ISM4Mac { pcdataResult =pop; } if (null == this.pcMac || "".equals(this.pcMac)) { - LongDataReturn stringStringLongDataReturn = api.SYD_SM4Mac_LongData(iKeyIndex, pcdataResult, iPkgNum, pcProcData); + LongDataReturn stringStringLongDataReturn = api.SYD_SM4Mac_LongData(iKeyIndex, pcdataResult, iPkgNum, pcProcData); pcProcData = stringStringLongDataReturn.getProcData(); iPkgNum = 2; } else { - LongDataReturn stringBooleanLongDataReturn = api.SYD_SM4Mac_LongData(iKeyIndex, pcdataResult, iPkgNum, pcProcData, pcMac); + LongDataReturn stringBooleanLongDataReturn = api.SYD_SM4Mac_LongData(iKeyIndex, pcdataResult, iPkgNum, pcProcData, pcMac); pcProcData = stringBooleanLongDataReturn.getProcData(); iPkgNum = 2; } @@ -59,11 +60,11 @@ public class SydSM4Mac implements ISM4Mac { queue.push(pcData); byte[] pop = queue.pop(16, 0); if (null == this.pcMac || "".equals(this.pcMac)) { - LongDataReturn stringStringLongDataReturn = api.SYD_SM4Mac_LongData(iKeyIndex, pop, iPkgNum, pcProcData); + LongDataReturn stringStringLongDataReturn = api.SYD_SM4Mac_LongData(iKeyIndex, pop, iPkgNum, pcProcData); pcProcData = stringStringLongDataReturn.getProcData(); iPkgNum = 2; } else { - LongDataReturn stringBooleanLongDataReturn = api.SYD_SM4Mac_LongData(iKeyIndex, pop, iPkgNum, pcProcData, pcMac); + LongDataReturn stringBooleanLongDataReturn = api.SYD_SM4Mac_LongData(iKeyIndex, pop, iPkgNum, pcProcData, pcMac); pcProcData = stringBooleanLongDataReturn.getProcData(); iPkgNum = 2; @@ -73,12 +74,12 @@ public class SydSM4Mac implements ISM4Mac { } @Override - public boolean checkDigest(String mac) { - return mac != null && this.pcMac.equals(mac); + public boolean checkDigest(byte[] mac) { + return mac != null && Arrays.equals(this.pcMac, mac); } @Override - public String digest() { + public byte[] digest() { if (is_finished) { throw new SydApiException(0x8007); @@ -91,7 +92,7 @@ public class SydSM4Mac implements ISM4Mac { } byte[] pop = queue.pop(); - LongDataReturn stringStringLongDataReturn = api.SYD_SM4Mac_LongData(iKeyIndex, pop, iPkgNum, pcProcData); + LongDataReturn stringStringLongDataReturn = api.SYD_SM4Mac_LongData(iKeyIndex, pop, iPkgNum, pcProcData); return stringStringLongDataReturn.getData(); } diff --git a/src/main/java/com/sunyard/sge/plus/SydLibrary.java b/src/main/java/com/sunyard/sge/plus/SydLibrary.java new file mode 100644 index 0000000..6c027c6 --- /dev/null +++ b/src/main/java/com/sunyard/sge/plus/SydLibrary.java @@ -0,0 +1,76 @@ +package com.sunyard.sge.plus; + +import com.sun.jna.Library; +import com.sun.jna.Native; +import com.sun.jna.Pointer; +import com.sun.jna.ptr.IntByReference; +import com.sun.jna.ptr.PointerByReference; + +public interface SydLibrary extends Library { + // 加载动态库 + SydLibrary INSTANCE = Native.load("sunyard", SydLibrary.class); + + // 1.1 设置日志配置 + int SYD_SetLogConfig(String pcLogPath, int iLogPathLen, int iLogLevel); + + // 1.2 建立与设备的连接 + int SYD_Connect_Ex( + String[] pcIpList, + int[] iPortList, + int iSize, + int iConnectTimeOut, + int iDealTimeOut, + int iThreadCount, + PointerByReference phHandle); + + // 1.3 断开与设备的连接 + int SYD_DisConnect_Ex(Pointer phHandle); + + // 1.14 短数据加密并输出密文校验值 + int SYD_SM4_Encrypt_Mac_ShortData( + Pointer phHandle, + int iEncKeyIndex, + int iCheckKeyIndex, + byte[] pcData, + int iDataLen, + byte[] pcEncData, + IntByReference piEncDataLen, + byte[] pcMac); + + // 1.15 短数据解密并对密文校验值进行核对 + int SYD_SM4_Decrypt_Mac_ShortData( + Pointer phHandle, + int iEncKeyIndex, + int iCheckKeyIndex, + byte[] pcEncData, + int iEncDataLen, + byte[] pcMac, + byte[] pcOutData, + IntByReference piOutDataLen); + + // 1.16 批量数据加密并输出密文校验值 + int SYD_SM4_Encrypt_Mac_BatchData( + Pointer phHandle, + int[] iEncKeyIndex, + int[] iCheckKeyIndex, + byte[][] pcData, + int[] iDataLen, + int iSize, + byte[][] pcEncData, + int[] iEncDataLen, + byte[] pcMac); + + // 1.17 批量数据解密并对密文校验值进行核对 + int SYD_SM4_Decrypt_Mac_BatchData( + Pointer phHandle, + int[] iEncKeyIndex, + int[] iCheckKeyIndex, + byte[][] pcEncData, + int[] iEncDataLen, + byte[][] pcMac, + int iSize, + byte[][] pcOutData, + int[] iOutDataLen, + int[] iCheckRet); + +} diff --git a/src/main/resources/lib/aarch64/libsunyard.so b/src/main/resources/lib/aarch64/libsunyard.so new file mode 100644 index 0000000..37d83d6 Binary files /dev/null and b/src/main/resources/lib/aarch64/libsunyard.so differ diff --git a/src/main/resources/lib/x86_64/libsunyard.so b/src/main/resources/lib/x86_64/libsunyard.so new file mode 100644 index 0000000..cb6fa8b Binary files /dev/null and b/src/main/resources/lib/x86_64/libsunyard.so differ diff --git a/src/test/java/sample/Sample.java b/src/test/java/sample/Sample.java index 2edee5e..da4ec38 100644 --- a/src/test/java/sample/Sample.java +++ b/src/test/java/sample/Sample.java @@ -268,8 +268,8 @@ public class Sample public static void shortSM3(SydApi api){ // 测试数据 byte[] data = new byte[16]; - String macData = api.SYD_SM3_Hash_ShortData( data ); - Assert.assertEquals( macData , "106E34A2B8C7BB13156CFDD0D91379DCC47543DCF9787C68AE5EB582620AE6E8"); + byte[] macData = api.SYD_SM3_Hash_ShortData( data ); + Assert.assertEquals( macData , Util.hexString2Bytes("106E34A2B8C7BB13156CFDD0D91379DCC47543DCF9787C68AE5EB582620AE6E8")); } diff --git a/src/test/java/test/FuncTest.java b/src/test/java/test/FuncTest.java index 82a7763..b3e0ca5 100644 --- a/src/test/java/test/FuncTest.java +++ b/src/test/java/test/FuncTest.java @@ -62,7 +62,7 @@ public class FuncTest { public void longConnectFunc() { System.out.println("-------- 设置长连接参数与获取长连接功能测试开始 --------"); -SydApi api = connect(); + SydApi api = connect(); System.out.println("设置长连接参数与获取长连接成功"); System.out.println("-------- 设置长连接参数与获取长连接功能测试结束 --------\n"); @@ -71,10 +71,10 @@ SydApi api = connect(); public void sm3ShortFunc() { System.out.println("-------- SM3短数据功能测试开始 --------"); -SydApi api = connect(); + SydApi api = connect(); - String res1 = api.SYD_SM3_Hash_ShortData(new byte[1024]); - String res2 = api.SYD_SM3_Hash_ShortData(new byte[0]); + byte[] res1 = api.SYD_SM3_Hash_ShortData(new byte[1024]); + byte[] res2 = api.SYD_SM3_Hash_ShortData(new byte[0]); if (res1.equals(CalcRes.SM3_SHORT_RESULT1) && res2.equals(CalcRes.SM3_SHORT_RESULT2)) { System.out.println("SM3短数据测试成功"); @@ -106,7 +106,7 @@ SydApi api = connect(); for (int i = 0; i < 10; i++) { sm3.update(data); } - String res1 = sm3.digest(); + byte[] res1 = sm3.digest(); data = new byte[0]; sm3 = api.initSM3(); @@ -114,9 +114,11 @@ SydApi api = connect(); sm3.update(data); } - String res2 = sm3.digest(); + byte[] res2 = sm3.digest(); - if (res1.equals(CalcRes.SM3_LONG_RESULT1) && res2.equals(CalcRes.SM3_LONG_RESULT2)) { + if (Arrays.equals(res1, Util.hexString2Bytes(CalcRes.SM3_LONG_RESULT1)) + && Arrays.equals(res2, Util.hexString2Bytes(CalcRes.SM3_LONG_RESULT2)) + ) { System.out.println("SM3长数据测试成功"); } else { System.out.println("SM3长数据测试失败"); @@ -131,7 +133,7 @@ SydApi api = connect(); public void sm4ShortFunc() { System.out.println("-------- SM4短数据加解密功能测试开始 --------"); -SydApi api = connect(); + SydApi api = connect(); int key = 0; byte[] enc1 = api.SYD_SM4_ShortData(key, new byte[1024], ECB_ENC); @@ -219,7 +221,7 @@ SydApi api = connect(); public void sm4macLongFunc() { System.out.println("-------- SM4MAC长数据功能测试开始 --------"); -SydApi api = connect(); + SydApi api = connect(); byte[] data1 = new byte[4064]; int key = 0; @@ -227,14 +229,14 @@ SydApi api = connect(); for (int i = 0; i < 10; i++) { sm4mac.update(data1); } - String res1 = sm4mac.digest(); + byte[] res1 = sm4mac.digest(); byte[] data2 = new byte[16]; sm4mac = api.initSM4Mac(key); for (int i = 0; i < 10; i++) { sm4mac.update(data2); } - String res2 = sm4mac.digest(); + byte[] res2 = sm4mac.digest(); // c = opt.check(hexStringTobytes(SM4MAC_LONG_RESULT1)) // s = opt.hexcheck(SM4MAC_LONG_RESULT1)