This commit is contained in:
Cheney Wong 2025-07-02 10:30:16 +08:00
parent 392efecee3
commit f905cd8608
5 changed files with 94 additions and 6 deletions

View File

@ -3,5 +3,5 @@
debug=false
# 地址列表 (格式: addX=ip:port)
add1=127.0.0.1:8889
add2=172.1.41.129:8889
addr1=172.1.41.129:8889
addr2=172.1.41.129:8889

View File

@ -37,7 +37,7 @@
<dependency>
<groupId>com.sunyard</groupId>
<artifactId>sydapi4j</artifactId>
<version>1.15.20250627</version>
<version>1.15.20250701</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>

View File

@ -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>() {

View File

@ -10,7 +10,7 @@ public class CommWorker {
// 连接池配置
private final PoolConfig poolConfig;
// 真正的通信线程
private final ExecutorService threadPool;
private final ThreadPoolExecutor threadPool;
public CommWorker(){
this( new PoolConfig() );
@ -26,6 +26,12 @@ public class CommWorker {
);
}
public boolean threadPoolIsBusy() {
// 返回线程池
return threadPool.getActiveCount() > (poolConfig.getMaxAliveNumber() / 2);
}
/**
* 执行一个异步任务
* @param callable

View File

@ -20,3 +20,17 @@ sydapi4j-1.0.20220906.jar
- log4j-api-2.17.0.jar 日志接口
- log4j-core-2.17.0.jar 日志核心包
- sydapi4j-1.0.20220805.jar 加密机通信包
linux测试服务器
电口172.1.10.245
光口192.168.100.245
金交所(非信创-4.07版本)
电口172.1.41.216
光口192.168.110.240
金交所(信创-11.01.01版本)
电口172.1.41.129
光口192.168.100.45