save
This commit is contained in:
parent
392efecee3
commit
f905cd8608
@ -3,5 +3,5 @@
|
|||||||
debug=false
|
debug=false
|
||||||
|
|
||||||
# 地址列表 (格式: addX=ip:port)
|
# 地址列表 (格式: addX=ip:port)
|
||||||
add1=127.0.0.1:8889
|
addr1=172.1.41.129:8889
|
||||||
add2=172.1.41.129:8889
|
addr2=172.1.41.129:8889
|
||||||
|
|||||||
2
pom.xml
2
pom.xml
@ -37,7 +37,7 @@
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.sunyard</groupId>
|
<groupId>com.sunyard</groupId>
|
||||||
<artifactId>sydapi4j</artifactId>
|
<artifactId>sydapi4j</artifactId>
|
||||||
<version>1.15.20250627</version>
|
<version>1.15.20250701</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.apache.logging.log4j</groupId>
|
<groupId>org.apache.logging.log4j</groupId>
|
||||||
|
|||||||
@ -155,8 +155,7 @@ public class SydApiLongLinkWrap implements SydApi {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
private DataAndMac SYD_SM4_AllInOne(int iEncKeyIndex, int iMacKeyIndex, byte[] pcData){
|
||||||
public DataAndMac SYD_SM4_EncryptAndMac_ShortData(int iEncKeyIndex, int iMacKeyIndex, byte[] pcData) {
|
|
||||||
try {
|
try {
|
||||||
FutureTask<byte[]> taskEnc = builder.getLongLinkWorks().fTask(new Callable<byte[]>() {
|
FutureTask<byte[]> taskEnc = builder.getLongLinkWorks().fTask(new Callable<byte[]>() {
|
||||||
@Override
|
@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
|
@Override
|
||||||
public DataAndMacCheck SYD_SM4_CheckMacAndDecrypt_ShortData(int iEncKeyIndex, int iMacKeyIndex, byte[] pcData, String mac) {
|
public DataAndMacCheck SYD_SM4_CheckMacAndDecrypt_ShortData(int iEncKeyIndex, int iMacKeyIndex, byte[] pcData, String mac) {
|
||||||
FutureTask<DataAndMacCheck> task = builder.getLongLinkWorks().fTask(new Callable<DataAndMacCheck>() {
|
FutureTask<DataAndMacCheck> task = builder.getLongLinkWorks().fTask(new Callable<DataAndMacCheck>() {
|
||||||
|
|||||||
@ -10,7 +10,7 @@ public class CommWorker {
|
|||||||
// 连接池配置
|
// 连接池配置
|
||||||
private final PoolConfig poolConfig;
|
private final PoolConfig poolConfig;
|
||||||
// 真正的通信线程
|
// 真正的通信线程
|
||||||
private final ExecutorService threadPool;
|
private final ThreadPoolExecutor threadPool;
|
||||||
|
|
||||||
public CommWorker(){
|
public CommWorker(){
|
||||||
this( new PoolConfig() );
|
this( new PoolConfig() );
|
||||||
@ -26,6 +26,12 @@ public class CommWorker {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean threadPoolIsBusy() {
|
||||||
|
// 返回线程池
|
||||||
|
return threadPool.getActiveCount() > (poolConfig.getMaxAliveNumber() / 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 执行一个异步任务
|
* 执行一个异步任务
|
||||||
* @param callable
|
* @param callable
|
||||||
|
|||||||
14
说明.txt
14
说明.txt
@ -20,3 +20,17 @@ sydapi4j-1.0.20220906.jar
|
|||||||
- log4j-api-2.17.0.jar 日志接口
|
- log4j-api-2.17.0.jar 日志接口
|
||||||
- log4j-core-2.17.0.jar 日志核心包
|
- log4j-core-2.17.0.jar 日志核心包
|
||||||
- sydapi4j-1.0.20220805.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
|
||||||
Loading…
Reference in New Issue
Block a user