save
This commit is contained in:
@@ -155,8 +155,7 @@ public class SydApiLongLinkWrap implements SydApi {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public DataAndMac SYD_SM4_EncryptAndMac_ShortData(int iEncKeyIndex, int iMacKeyIndex, byte[] pcData) {
|
||||
private DataAndMac SYD_SM4_AllInOne(int iEncKeyIndex, int iMacKeyIndex, byte[] pcData){
|
||||
try {
|
||||
FutureTask<byte[]> taskEnc = builder.getLongLinkWorks().fTask(new Callable<byte[]>() {
|
||||
@Override
|
||||
@@ -181,6 +180,75 @@ public class SydApiLongLinkWrap implements SydApi {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public DataAndMac SYD_SM4_EncryptAndMac_ShortData(int iEncKeyIndex, int iMacKeyIndex, byte[] pcData) {
|
||||
try {
|
||||
|
||||
return SYD_SM4_AllInOne(iEncKeyIndex, iMacKeyIndex, pcData);
|
||||
|
||||
// // 线程池忙, 使用单线程计算
|
||||
// if( builder.getLongLinkWorks().threadPoolIsBusy() ) {
|
||||
// return SYD_SM4_AllInOne(iEncKeyIndex, iMacKeyIndex, pcData);
|
||||
// }
|
||||
//
|
||||
// // 线程池不忙,使用并发计算
|
||||
//
|
||||
// // 将pcData拆分为两半,第一半16字节对齐
|
||||
// int halfLength = pcData.length / 2;
|
||||
// int alignedLength = (halfLength + 15) & ~15; // 向上取整到16的倍数
|
||||
// alignedLength = Math.min(alignedLength, pcData.length); // 不超过原始数据长度
|
||||
// if (alignedLength < 16) {
|
||||
// throw new IllegalArgumentException("数据长度不足16字节,无法对齐");
|
||||
// }
|
||||
//
|
||||
//
|
||||
// byte[] firstHalf = Arrays.copyOfRange(pcData, 0, alignedLength);
|
||||
// byte[] secondHalf = Arrays.copyOfRange(pcData, alignedLength, pcData.length);
|
||||
//
|
||||
//
|
||||
// FutureTask<byte[]> taskEnc1 = builder.getLongLinkWorks().fTask(new Callable<byte[]>() {
|
||||
// @Override
|
||||
// public byte[] call() throws Exception {
|
||||
// return builder.get().SYD_SM4_LongData( iEncKeyIndex, firstHalf, 1, Consts.ECB_ENC);
|
||||
// }
|
||||
// });
|
||||
// FutureTask<byte[]> taskEnc2 = builder.getLongLinkWorks().fTask(new Callable<byte[]>() {
|
||||
// @Override
|
||||
// public byte[] call() throws Exception {
|
||||
// return builder.get().SYD_SM4_LongData( iEncKeyIndex, secondHalf, 3, Consts.ECB_ENC);
|
||||
// }
|
||||
// });
|
||||
//
|
||||
// byte[] enData1 = taskEnc1.get();
|
||||
// FutureTask<LongDataReturn<String, String>> taskMac = builder.getLongLinkWorks().fTask(new Callable< LongDataReturn<String, String>>() {
|
||||
// @Override
|
||||
// public LongDataReturn<String, String> call() throws Exception {
|
||||
// return builder.get().SYD_SM4Mac_LongData(iMacKeyIndex, enData1, 1, null);
|
||||
// }
|
||||
// });
|
||||
//
|
||||
// byte[] enData2 = taskEnc2.get();
|
||||
// LongDataReturn<String, String> macProc = taskMac.get();
|
||||
// FutureTask<LongDataReturn<String, String>> taskMac2 = builder.getLongLinkWorks().fTask(new Callable<LongDataReturn<String, String>>() {
|
||||
// @Override
|
||||
// public LongDataReturn<String, String> call() throws Exception {
|
||||
// return builder.get().SYD_SM4Mac_LongData(iMacKeyIndex, enData2, 3, macProc.getProcData());
|
||||
// }
|
||||
// });
|
||||
// LongDataReturn<String, String> mac = taskMac.get();
|
||||
//
|
||||
// // 合并密文
|
||||
// byte[] enData = new byte[enData1.length + enData2.length];
|
||||
// System.arraycopy(enData1, 0, enData, 0, enData1.length);
|
||||
// System.arraycopy(enData2, 0, enData, enData1.length, enData2.length);
|
||||
//
|
||||
//
|
||||
// return new DataAndMac(enData, mac.getData());
|
||||
} catch (Exception e) {
|
||||
throw new SydApiException("并行任务执行失败", 0xC101, e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public DataAndMacCheck SYD_SM4_CheckMacAndDecrypt_ShortData(int iEncKeyIndex, int iMacKeyIndex, byte[] pcData, String mac) {
|
||||
FutureTask<DataAndMacCheck> task = builder.getLongLinkWorks().fTask(new Callable<DataAndMacCheck>() {
|
||||
|
||||
Reference in New Issue
Block a user