MAC 统一为 bytes
This commit is contained in:
@@ -515,14 +515,14 @@ public class SydApiBaseFunction implements SydApi {
|
||||
}
|
||||
|
||||
@Override
|
||||
public String[] SYD_SM4Mac_BatchData(int[] iKeyIndex, List<byte[]> pcData) {
|
||||
public List<byte[]> SYD_SM4Mac_BatchData(int[] iKeyIndex, List<byte[]> pcData) {
|
||||
Logger log = LogFactory.getLogger();
|
||||
if (LogFactory.iLogLevel == 3) {
|
||||
log.debug("SYD_SM4Mac_BatchData:iKeyIndex:{},pcData元素个数为:{}", iKeyIndex, pcData.size());
|
||||
}
|
||||
|
||||
if (pcData.isEmpty()) {
|
||||
return new String[0];
|
||||
return new ArrayList<>();
|
||||
}
|
||||
|
||||
if (null == this.hsms || this.hsms.length < 1) {
|
||||
@@ -545,12 +545,12 @@ public class SydApiBaseFunction implements SydApi {
|
||||
if (isShortLinkMode) {
|
||||
try {
|
||||
List<byte[]> list = api.SYMEncryptDecryptBatchData(8, 2, null, keys, 1, pcData);
|
||||
String[] ret = new String[list.size()];
|
||||
List<byte[]> ret = new ArrayList<>(list.size());
|
||||
for (int i = 0; i < list.size(); i++) {
|
||||
byte[] mac = new byte[16];
|
||||
byte[] buff = list.get(i);
|
||||
System.arraycopy(buff, buff.length - 16, mac, 0, 16);
|
||||
ret[i] = Util.bytes2HexString(mac);
|
||||
ret.add( mac );
|
||||
}
|
||||
return ret;
|
||||
|
||||
@@ -566,12 +566,12 @@ public class SydApiBaseFunction implements SydApi {
|
||||
synchronized (api) {
|
||||
try {
|
||||
List<byte[]> list = api.SYMEncryptDecryptBatchData(8, 2, null, keys, 1, pcData);
|
||||
String[] ret = new String[list.size()];
|
||||
List<byte[]> ret = new ArrayList<>(list.size());
|
||||
for (int i = 0; i < list.size(); i++) {
|
||||
byte[] mac = new byte[16];
|
||||
byte[] buff = list.get(i);
|
||||
System.arraycopy(buff, buff.length - 16, mac, 0, 16);
|
||||
ret[i] = Util.bytes2HexString(mac);
|
||||
ret.add( mac );
|
||||
}
|
||||
return ret;
|
||||
|
||||
@@ -593,10 +593,10 @@ public class SydApiBaseFunction implements SydApi {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean[] SYD_SM4Mac_BatchData(int[] iKeyIndex, List<byte[]> pcData, String[] pcMac) {
|
||||
public boolean[] SYD_SM4Mac_BatchData(int[] iKeyIndex, List<byte[]> pcData, List<byte[]> pcMac) {
|
||||
Logger log = LogFactory.getLogger();
|
||||
if (LogFactory.iLogLevel == 3) {
|
||||
log.debug("SYD_SM4Mac_BatchData方法接收参数:iKeyIndex:{}, pcData元素个数为:{},pcMac:{}", iKeyIndex, pcData.size(), Arrays.toString(pcMac));
|
||||
log.debug("SYD_SM4Mac_BatchData 方法接收参数:iKeyIndex:{}, pcData元素个数为:{},pcMac:{}", iKeyIndex, pcData.size(), pcMac.size());
|
||||
}
|
||||
|
||||
if (pcData.isEmpty()) {
|
||||
@@ -626,7 +626,7 @@ public class SydApiBaseFunction implements SydApi {
|
||||
byte[] mac = new byte[16];
|
||||
byte[] buff = list.get(i);
|
||||
System.arraycopy(buff, buff.length - 16, mac, 0, 16);
|
||||
ret[i] = pcMac[i].equals(Util.bytes2HexString(mac));
|
||||
ret[i] = Arrays.equals(pcMac.get(i), mac);
|
||||
}
|
||||
|
||||
return ret;
|
||||
@@ -647,7 +647,7 @@ public class SydApiBaseFunction implements SydApi {
|
||||
byte[] mac = new byte[16];
|
||||
byte[] buff = list.get(i);
|
||||
System.arraycopy(buff, buff.length - 16, mac, 0, 16);
|
||||
ret[i] = pcMac[i].equals(Util.bytes2HexString(mac));
|
||||
ret[i] = Arrays.equals(pcMac.get(i), mac);
|
||||
}
|
||||
|
||||
return ret;
|
||||
@@ -777,11 +777,11 @@ public class SydApiBaseFunction implements SydApi {
|
||||
}
|
||||
|
||||
@Override
|
||||
public String SYD_SM4Mac_ShortData(int iKeyIndex, byte[] pcData) {
|
||||
public byte[] SYD_SM4Mac_ShortData(int iKeyIndex, byte[] pcData) {
|
||||
return SYD_SM4Mac_ShortData(iKeyIndex, pcData, 1024);
|
||||
}
|
||||
|
||||
public String SYD_SM4Mac_ShortData(int iKeyIndex, byte[] pcData, int limitDataLen) {
|
||||
public byte[] SYD_SM4Mac_ShortData(int iKeyIndex, byte[] pcData, int limitDataLen) {
|
||||
Logger log = LogFactory.getLogger();
|
||||
if (LogFactory.iLogLevel == 3) {
|
||||
log.debug("SYD_SM4Mac_ShortData方法接收参数:iKeyIndex:{},pcData:{},iFlag:{}", iKeyIndex, Arrays.toString(pcData));
|
||||
@@ -843,15 +843,15 @@ public class SydApiBaseFunction implements SydApi {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean SYD_SM4Mac_ShortData(int iKeyIndex, byte[] pcData, String pcMac) {
|
||||
public boolean SYD_SM4Mac_ShortData(int iKeyIndex, byte[] pcData, byte[] pcMac) {
|
||||
return SYD_SM4Mac_ShortData(iKeyIndex, pcData, 1024, pcMac);
|
||||
}
|
||||
|
||||
|
||||
public boolean SYD_SM4Mac_ShortData(int iKeyIndex, byte[] pcData, int limitDataLen, String pcMac) {
|
||||
public boolean SYD_SM4Mac_ShortData(int iKeyIndex, byte[] pcData, int limitDataLen, byte[] pcMac) {
|
||||
Logger log = LogFactory.getLogger();
|
||||
if (LogFactory.iLogLevel == 3) {
|
||||
log.debug("SYD_SM4Mac_ShortData方法接收参数:{}", iKeyIndex, Arrays.toString(pcData), pcMac);
|
||||
log.debug("SYD_SM4Mac_ShortData 方法接收参数:{}", iKeyIndex, Util.bytes2HexString(pcData), Util.bytes2HexString(pcMac));
|
||||
}
|
||||
|
||||
if ( null == pcData || pcData.length > limitDataLen ) {
|
||||
@@ -866,7 +866,7 @@ public class SydApiBaseFunction implements SydApi {
|
||||
throw new IllegalArgumentException();
|
||||
}
|
||||
updateLastUseTime();
|
||||
String mac = this.SYD_SM4Mac_ShortData(iKeyIndex, pcData, limitDataLen);
|
||||
byte[] mac = this.SYD_SM4Mac_ShortData(iKeyIndex, pcData, limitDataLen);
|
||||
log.debug(this + ".SYD_SM4Mac_ShortData方法返回值:{}", mac);
|
||||
return pcMac.equals(mac);
|
||||
}
|
||||
@@ -888,14 +888,14 @@ public class SydApiBaseFunction implements SydApi {
|
||||
// 参数检查在函数内部
|
||||
byte[] enData = SYD_SM4_ShortData(iEncKeyIndex, pcData, Consts.ECB_ENC);
|
||||
// mac 长度放宽到 1024,因为密文填充
|
||||
String mac = SYD_SM4Mac_ShortData(iMacKeyIndex, enData, 1040);
|
||||
byte[] mac = SYD_SM4Mac_ShortData(iMacKeyIndex, enData, 1040);
|
||||
return new DataAndMac(enData, mac);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@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, byte[] mac) {
|
||||
Logger log = LogFactory.getLogger();
|
||||
if (LogFactory.iLogLevel == 3) {
|
||||
log.debug("SYD_SM4_CheckMacAndDecrypt_ShortData:k1={} k2={}", iEncKeyIndex, iMacKeyIndex);
|
||||
@@ -933,10 +933,10 @@ public class SydApiBaseFunction implements SydApi {
|
||||
}
|
||||
|
||||
List<byte[]> enDatas = SYD_SM4_BatchData(iEncKeyIndex, pcData, Consts.ECB_ENC);
|
||||
String[] macs = SYD_SM4Mac_BatchData(iMacKeyIndex, enDatas);
|
||||
List<byte[]> macs = SYD_SM4Mac_BatchData(iMacKeyIndex, enDatas);
|
||||
List<DataAndMac> ret = new ArrayList<DataAndMac>();
|
||||
for ( int i=0 ; i< enDatas.size() ; i++ ) {
|
||||
DataAndMac dam = new DataAndMac(enDatas.get(i), macs[i]);
|
||||
DataAndMac dam = new DataAndMac(enDatas.get(i), macs.get(i));
|
||||
ret.add(dam);
|
||||
}
|
||||
return ret;
|
||||
@@ -961,10 +961,10 @@ public class SydApiBaseFunction implements SydApi {
|
||||
throw new SydApiException("密钥长度和数据长度不对应", 0x01000001);
|
||||
}
|
||||
|
||||
String[] macs = new String[pcData.size()];
|
||||
List<byte[]> macs = new ArrayList<>(pcData.size());
|
||||
List<byte[]>datas = new ArrayList<>(pcData.size());
|
||||
for ( int i=0 ; i<macs.length; i++ ) {
|
||||
macs[i] = pcData.get(i).getMac();
|
||||
for ( int i=0 ; i<macs.size(); i++ ) {
|
||||
macs.add(pcData.get(i).getMac());
|
||||
datas.add(pcData.get(i).getData());
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user