From 3cd9e78990ef3168ba03ca312583728b6c2fd0c4 Mon Sep 17 00:00:00 2001 From: cheney Date: Tue, 21 Jun 2022 18:14:28 +0800 Subject: [PATCH] DN reverse bug fix --- DProto/6A.xml | 2 +- src/main/java/com/sunyard/inf/SydGenApi.java | 6 +- src/main/java/com/sunyard/inf/SydSVApi.java | 10 +- src/main/java/com/sunyard/util/DnUtil.java | 13 +- .../java/racal/sunyard/main/SydApi4j.java | 79 +- .../sunyard/sydapi/loadrunner/ShangTest.java | 7 +- .../sunyard/sydapi/test/TestAllMethods.java | 5136 ++++++++--------- .../java/com/sunyard/sydapi/test/TestHT.java | 226 +- .../java/com/sunyard/sydapi/test/TestSV.java | 208 +- .../sunyard/sydapi/util/SydCmsUtilTest.java | 4 +- 10 files changed, 2824 insertions(+), 2867 deletions(-) diff --git a/DProto/6A.xml b/DProto/6A.xml index c3c4ae8..b914fcb 100644 --- a/DProto/6A.xml +++ b/DProto/6A.xml @@ -187,7 +187,7 @@ } function dataLen() { - return $packet.data.orgData.length() + return $packet.data.orgData.length } map = dnToMap( dn ); + String[] kvs = dn.split(","); StringBuilder sb = new StringBuilder(); - for ( String key : map.keySet() ) { + for ( String kv : kvs ) { + if ( sb.length() > 0 ) { sb.insert(0, ","); } - sb.insert(0, key + "=" + map.get( key )); + sb.insert(0, kv ); + +// if ( sb.length() > 0 ) { +// sb.append(","); +// } +// sb.append( key + "=" + map.get( key ) ); } return sb.toString(); diff --git a/src/main/java/racal/sunyard/main/SydApi4j.java b/src/main/java/racal/sunyard/main/SydApi4j.java index e1a6533..dff557f 100644 --- a/src/main/java/racal/sunyard/main/SydApi4j.java +++ b/src/main/java/racal/sunyard/main/SydApi4j.java @@ -2302,15 +2302,15 @@ public class SydApi4j implements SydApi { } @Override - public RetWrap generateDEByDn(String certSerial, String oData) { - if ( oData.length() <= 4 * 1024 ) { + public RetWrap generateDEByDn(String certSerial, byte[] oData) { + if ( oData.length <= 4 * 1024 ) { return generateDEByDnHsm( certSerial, oData ); } else { return generateDEByDnSoft( certSerial, oData ); } } - public RetWrap generateDEByDnHsm(String certSerial, String oData) { + public RetWrap generateDEByDnHsm(String certSerial, byte[] oData) { certSerial = DnUtil.verifyDn( certSerial ); @@ -2324,7 +2324,7 @@ public class SydApi4j implements SydApi { } @Override - public RetWrap generateDE(byte[] certSerial, int alg, int model, String oData) { + public RetWrap generateDE(byte[] certSerial, int alg, int model, byte[] oData) { Proto6A proto = new Proto6A(); // 填充数据 PacketSN sn = PacketSN.gen(); @@ -2368,12 +2368,12 @@ public class SydApi4j implements SydApi { throw new SydApiException(error.getInfo(), error.autoInt()); } RetWrap rw = new RetWrap(); - rw.put(SydApi.RET_CIPHER_KEY, ((PacketSection) ret.get("key")).getString()); - rw.put(SydApi.RET_SESSION_KEY, ((PacketSection) ret.get("lmkHead")).getString() + - ((PacketSection) ret.get("lmk")).getString() + rw.put(SydApi.RET_CIPHER_KEY, ((PacketSection) ret.get("key")).getBytes() ); + rw.put(SydApi.RET_SESSION_KEY, (((PacketSection) ret.get("lmkHead")).getString() + + ((PacketSection) ret.get("lmk")).getString()).getBytes() ); - rw.put(SydApi.RET_KCV, ((PacketSection) ret.get("keyCheck")).getString()); + rw.put(SydApi.RET_KCV, ((PacketSection) ret.get("keyCheck")).getBytes()); return rw; } @@ -2528,7 +2528,7 @@ public class SydApi4j implements SydApi { return (X509Certificate) cf.generateCertificate(is); } - public RetWrap generateDEByDnSoft(String certSerial, String oData) { + public RetWrap generateDEByDnSoft(String certSerial, byte[] oData) { certSerial = DnUtil.verifyDn( certSerial ); @@ -2561,15 +2561,15 @@ public class SydApi4j implements SydApi { // 生成会话密钥 ret = SM2GenSessionKey(pk); - String ciperKey = ret.get(SydApi.RET_CIPHER_KEY).toString(); - String sessionKeyByLMK = ret.get(SydApi.RET_SESSION_KEY).toString(); + String ciperKey = new String( (byte[]) ret.get(SydApi.RET_CIPHER_KEY)); + String sessionKeyByLMK = new String( (byte[]) ret.get(SydApi.RET_SESSION_KEY )); println("ciperKey=" + ciperKey); // 加密数据 byte[] iv = new byte[32]; Arrays.fill(iv, (byte) 0x30); - RetWrap retWrap = SYMEnDeData(true, 1, sessionKeyByLMK, 1, 1, oData.getBytes(), iv, 0); + RetWrap retWrap = SYMEnDeData(true, 1, sessionKeyByLMK, 1, 1, oData, iv, 0); byte[] enData = (byte[]) retWrap.get("msg_all"); // 组织格式 @@ -2578,7 +2578,7 @@ public class SydApi4j implements SydApi { dnToMap(issuser.getName() ) ); - ret.put(SydApi.RET_CIPHER_KEY, Util.encodeBase64(cms.getEncoded())); + ret.put(SydApi.RET_CIPHER_KEY, Util.encodeBase64(cms.getEncoded()).getBytes() ); return ret; @@ -2658,11 +2658,11 @@ public class SydApi4j implements SydApi { return info; } - public RetWrap decryptDEByDN(String certSerial, String pCipherKey){ - if ( pCipherKey.length() <= 4 * 1024 ) { - return decryptDEByDNHsm( certSerial, pCipherKey ); + public RetWrap decryptDEByDN(String certSerial, byte[] pCipherKey){ + if ( pCipherKey.length <= 4 * 1024 ) { + return decryptDEByDNHsm( certSerial, new String(pCipherKey) ); } else { - return decryptDEByDNSoft( certSerial, pCipherKey ); + return decryptDEByDNSoft( certSerial, new String(pCipherKey) ); } } @@ -2683,7 +2683,7 @@ public class SydApi4j implements SydApi { // 解密会话密钥 ret = decryptDE(false, 1, dnBytes, Util.encodeBase64(sessionKeyDer) ); - String sessionKey = (String) ret.get("SessionKey"); + String sessionKey = new String((byte[]) ret.get("SessionKey") ); // 解密原文 byte[] iv = new byte[32]; @@ -2747,19 +2747,19 @@ public class SydApi4j implements SydApi { RetWrap rw = new RetWrap(); if (pFlag) { - rw.put("oData", ((PacketSection) ret.get("oData")).getString()); + rw.put("oData", ((PacketSection) ret.get("oData")).getBytes()); } int orgCodeLen = Util.a2i(((PacketSection) ret.get("orgCodeLen")).getBytes(), 10); if (orgCodeLen != 0) { - rw.put("orgCode", ((PacketSection) ret.get("orgCode")).getString()); + rw.put("orgCode", ((PacketSection) ret.get("orgCode")).getBytes()); } - rw.put(SydApi.RET_SESSION_KEY, ((PacketSection) ret.get("lmkHead")).getString() + - ((PacketSection) ret.get("lmk")).getString() + rw.put(SydApi.RET_SESSION_KEY, (((PacketSection) ret.get("lmkHead")).getString() + + ((PacketSection) ret.get("lmk")).getString()).getBytes() ); - rw.put(SydApi.RET_KCV, ((PacketSection) ret.get("keyCheck")).getString()); + rw.put(SydApi.RET_KCV, ((PacketSection) ret.get("keyCheck")).getBytes()); return rw; } @@ -5141,14 +5141,15 @@ public class SydApi4j implements SydApi { throw new SydApiException(error.getInfo(), error.autoInt()); } RetWrap rw = new RetWrap(); - rw.put(SydApi.RET_CIPHER_KEY, Util.bytes2HexString( + rw.put(SydApi.RET_CIPHER_KEY, ((PacketSection) ret.get("key")).getBytes() - )); - rw.put(SydApi.RET_SESSION_KEY, ((PacketSection) ret.get("lmkHead")).getString() + - ((PacketSection) ret.get("lmk")).getString() ); - rw.put(SydApi.RET_KCV, ((PacketSection) ret.get("keyCheck")).getString()); + rw.put(SydApi.RET_SESSION_KEY, (((PacketSection) ret.get("lmkHead")).getString() + + ((PacketSection) ret.get("lmk")).getString()).getBytes() + ); + + rw.put(SydApi.RET_KCV, ((PacketSection) ret.get("keyCheck")).getBytes()); return rw; } @@ -10412,7 +10413,7 @@ public class SydApi4j implements SydApi { * @return 符合PKCS7标准的签名结果 */ @Override - public String attachedSign(byte[] orgData, String sCertDN) { + public byte[] attachedSign(byte[] orgData, String sCertDN) { sCertDN = DnUtil.verifyDn( sCertDN ); Proto8018 proto = new Proto8018(); @@ -10459,11 +10460,11 @@ public class SydApi4j implements SydApi { throw new SydApiException(error.getInfo(), error.autoInt()); } - return ((PacketSection) ret.get("signature")).getString(); + return ((PacketSection) ret.get("signature")).getString().getBytes(); } @Override - public boolean attachedVerify(String sign) { + public boolean attachedVerify(byte[] sign) { Proto8019 proto = new Proto8019(); // 填充数据 @@ -10473,7 +10474,7 @@ public class SydApi4j implements SydApi { PacketSN sn = PacketSN.gen(); packet.put("header", sn.getSn().array()); - data.put("signData", sign.getBytes()); + data.put("signData", sign); data.put("flag$option", 0); // 渲染发送 @@ -10506,12 +10507,12 @@ public class SydApi4j implements SydApi { } @Override - public String attachedVerifyRD(String sign) { + public byte[] attachedVerifyRD(byte[] sign) { RetWrap retWrap = attachedVerifyAndGetAll(sign); if (retWrap == null) return null; - return (String) retWrap.get("oData"); + return (byte[]) retWrap.get("oData"); } /** @@ -10521,15 +10522,15 @@ public class SydApi4j implements SydApi { * @param sign 已签名数据 * @return 返回CERT_INFO结构的证书数据 */ - public X509 attachedVerifyAndGetX509(String sign) { - RetWrap retWrap = attachedVerifyAndGetAll(sign); + public X509 attachedVerifyAndGetX509(byte[] sign) { + RetWrap retWrap = attachedVerifyAndGetAll( sign); if (retWrap == null) return null; return (X509) retWrap.get("x509"); } - public RetWrap attachedVerifyAndGetAll(String sign) { + public RetWrap attachedVerifyAndGetAll(byte[] sign) { Proto8019 proto = new Proto8019(); // 填充数据 @@ -10539,7 +10540,7 @@ public class SydApi4j implements SydApi { PacketSN sn = PacketSN.gen(); packet.put("header", sn.getSn().array()); - data.put("signData", sign.getBytes()); + data.put("signData", sign); data.put("flag$option", 1); // 渲染发送 @@ -10579,7 +10580,7 @@ public class SydApi4j implements SydApi { RetWrap retWrap = new RetWrap(); retWrap.put("x509", x509); - retWrap.put("oData", new String(oDataB)); + retWrap.put("oData", oDataB ); return retWrap; } diff --git a/src/test/java/com/sunyard/sydapi/loadrunner/ShangTest.java b/src/test/java/com/sunyard/sydapi/loadrunner/ShangTest.java index 14f1358..6528e6f 100644 --- a/src/test/java/com/sunyard/sydapi/loadrunner/ShangTest.java +++ b/src/test/java/com/sunyard/sydapi/loadrunner/ShangTest.java @@ -22,16 +22,11 @@ public class ShangTest { } public void action(){ - String sign = api.attachedSign(testData, dn); + byte[] sign = api.attachedSign(testData, dn); boolean ret = api.attachedVerify( sign ); assert ret; - sign = api.SYD_DetachedSign(testData, dn); - ret = api.SYD_DetachedVerify( testData, sign ); - - assert ret; - } public void end(){ diff --git a/src/test/java/com/sunyard/sydapi/test/TestAllMethods.java b/src/test/java/com/sunyard/sydapi/test/TestAllMethods.java index 3939db7..965c047 100644 --- a/src/test/java/com/sunyard/sydapi/test/TestAllMethods.java +++ b/src/test/java/com/sunyard/sydapi/test/TestAllMethods.java @@ -1,2569 +1,2569 @@ -package com.sunyard.sydapi.test; - -import com.sunyard.RetWrap; -import com.sunyard.SydApi; -import com.sunyard.SydApiException; -import com.sunyard.cert.X509; -import com.sunyard.proto.Util; -import com.sunyard.util.CoderUtil; -import com.sunyard.util.SYMUtil; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import racal.sunyard.main.SydApi4j; - -import java.io.*; -import java.lang.reflect.Method; -import java.net.InetSocketAddress; -import java.net.Socket; -import java.net.SocketAddress; -import java.nio.ByteBuffer; -import java.nio.charset.StandardCharsets; -import java.util.Base64; - -import static com.sunyard.sydapi.util.PrintUtil.printByteArray; -import static com.sunyard.sydapi.util.PrintUtil.printRetWrap; - -/** - * 所有方法的测试类 - */ -public class TestAllMethods { - - SydApi4j api; - - String account = "157212737811"; - - @Before - public void before() { - // 通过设置debug的属性开启debug,如果不设置则默认不打开 - System.setProperty("com.sunyard.sydapi4j.debug", "true"); -// api = (SydApi4j) new SydApi4j().connect("172.16.18.59", 8889, null, 1000); -// api = (SydApi4j) new SydApi4j().connect("192.168.0.119", 8889, null, 1000); -// api = (SydApi4j) new SydApi4j().connect("61.164.40.82", 8889, null, 1000); -// api = (SydApi4j) new SydApi4j().connect("192.168.0.66", 8889, null, 1000); - api = (SydApi4j) new SydApi4j().connect("192.168.0.100", 8889, null, 1000); -// api = (SydApi4j) new SydApi4j().connect("192.168.0.99", 8889, null, 1000); -// api = (SydApi4j) new SydApi4j().connect("172.16.17.162", 8889, null, 1000); -// api = (SydApi4j) new SydApi4j().connect("192.168.1.7", 8889, null, 5000); - } - - // 测试通过 - // Y8 - @Test - public void testLink() { - String s = api.GenerateRandom(16); - System.out.println(s); - } - - @After - public void after() { - try { - this.api.disconnect(); - } catch (Exception e) { - e.printStackTrace(); - } - } - - // 获取证书 - public String getCertStr(String path) { - - BufferedInputStream bis = null; - try { - bis = new BufferedInputStream(new FileInputStream(path)); - - StringBuilder str = new StringBuilder(); - - int len = 0; - - while ((len = bis.read()) != -1) { - str.append((char) len); - } - - return str.toString(); - } catch (IOException e) { - e.printStackTrace(); - } finally { - if (bis != null) { - try { - bis.close(); - } catch (IOException e) { - e.printStackTrace(); - } - } - } - - return null; - } - - /** - * 将hex类型的数组转为byte型 - * {"X0404894E7B8DE129B4FF4EF9889E56A2", "X94D35D86EF1F3213D55C47822F87D385"} - * 转为 - * [583034303438393445374238444531323942344646344546393838394535364132, 583934443335443836454631463332313344353543343738323246383744333835] - * @param strs - * @return - */ - public String[] strArr2BytesStrArr(String[] strs) { - String[] requestStrs = new String[strs.length]; - - for (int i = 0, len = strs.length; i < len; i++) { - String changeStr = Util.bytes2HexString(strs[i].getBytes()); - requestStrs[i] = changeStr; - } - - return requestStrs; - } - - /** - * 删除字符串中的空格 - * @param str - * @return - */ - public String changeStr(String str) { - return str.replaceAll(" ", ""); - } - - - /** - * 读取文件中的信息,返回byte数组 - * @param filePath 文件路径 - * @return - */ - public byte[] inputStream2ByteArray(String filePath) { - - BufferedInputStream in = null; - ByteArrayOutputStream out = null; - byte[] data = null; - try { - in = new BufferedInputStream(new FileInputStream(filePath)); - - out = new ByteArrayOutputStream(); - - byte[] buffer = new byte[1024 * 4]; - int n = 0; - while ((n = in.read(buffer)) != -1) { - out.write(buffer, 0, n); - } - - data = out.toByteArray(); - } catch (IOException e) { - e.printStackTrace(); - } finally { - - if (in != null) { - try { - in.close(); - } catch (IOException e) { - e.printStackTrace(); - } - } - - if (out != null) { - try { - out.close(); - } catch (IOException e) { - e.printStackTrace(); - } - } - } - - return data; - } - - /** - * 自己发送及接收 - * @throws IOException - */ - @Test - public void testSendData() throws IOException { - String msg = "000D00000000000000005938303136"; - - String ip = "172.16.18.59"; - int port = 8889; - int timeout = 1000; - - // 连接socket - Socket socket = new Socket(); - SocketAddress address = new InetSocketAddress(ip, port); - - try { - socket.connect(address, timeout); - socket.setSoTimeout(timeout); - } catch (IOException e) { - e.printStackTrace(); - } - - InputStream is = null; - try { - // 发送数据 - socket.getOutputStream().write(Util.hexString2Bytes(msg)); - // 接收数据 - is = socket.getInputStream(); - } catch (IOException e) { - e.printStackTrace(); - } - - // 处理数据 - int d; - int high = is.read(); - int low = is.read(); - // 计算数据总长度 - int len = (high << 8) + low; - - len += 2; - - // 创建ByteBuffer - ByteBuffer bb = ByteBuffer.allocate(len); - bb.put((byte) (high & 0xFF)); - - bb.put((byte) (low & 0xFF)); - - // 将数据放入ByteBuffer中 - while ((d = is.read()) != -1) { - - bb.put((byte) (d & 0xFF)); - if (bb.position() == len) { - break; - } - } - - System.out.println("返回的hex: " + Util.bytes2HexString(bb.array())); - } - - - // A0 1.1.1 对称密钥产生, - // 测试通过 - // A0 - @Test - public void testGenSymmetricKey() { - RetWrap retWrap = api.genSymmetricKey("000", 'X'); - - printRetWrap(retWrap); - } - - // 002D3030303030303030 - // 4130 - // 31 - // 303030 - // 58 - // 534B393939393939393939393939303030303030303030303030303030 - // 58 - - // A0 1.1.2 对称密钥产生, 对比之前添加了可产生ZMK加密下的密钥, - // 测试通过 - // A0 - @Test - public void testGenSymKey() { - // 此密钥方案为: 1A+K+27位的索引号 - RetWrap retWrap = api.genSymKey(1, "000", 'X', "SK999999999999000000000000000"); - - printRetWrap(retWrap); - } - - // 00000000 - // A4 - // 2 - // 000 - // X - // 密钥成份1:X0404894E7B8DE129B4FF4EF9889E56A2 - // 密钥成份2:X94D35D86EF1F3213D55C47822F87D385 - - // 003300000000000000004135 - // 3030 - // 58 - // 4639334538393745423345383636413346314233324432303232324245333446 - // 314246383237 - - // 测试通过 - // A4 - @Test - public void testComposeKey() { - String[] strs = {"583034303438393445374238444531323942344646344546393838394535364132", "583934443335443836454631463332313344353543343738323246383744333835"}; - RetWrap rw = api.composeKey("000", strs); - - printRetWrap(rw); - } - - // 00503030303030303030 - // 4136 - // 303030 - // 584141414141414141414141414141414142424242424242424242424242424242 - // 583934443335443836454631463332313344353543343738323246383744333835 - // 58 - - // 00000000 - // A6 - // 000 - // ZMK:XAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBB - // ZMK下加密的密钥:X94D35D86EF1F3213D55C47822F87D385 - // X - - // 测试通过 - // A6 - @Test - public void testInputKey() { - RetWrap retWrap = api.inputKey("000", 'X', "XAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBB", "X94D35D86EF1F3213D55C47822F87D385"); - - printRetWrap(retWrap); - } - - // 00000000 - // A8 - // 000 - // XAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBB - // X0404894E7B8DE129B4FF4EF9889E56A2 - // X - - // 测试通过 - // A8 - @Test - public void testOutputKey() { - RetWrap retWrap = api.outputKey("000", 'X', "XAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBB", "X94D35D86EF1F3213D55C47822F87D385"); - printRetWrap(retWrap); - } - - // 测试通过 - // B0 - @Test - public void testConversionKey() { - RetWrap retWrap = api.conversionKey("000", "X0404894E7B8DE129B4FF4EF9889E56A2", 'U'); - printRetWrap(retWrap); - } - - // 测试通过 - // AA - @Test - public void testAAGenComposeKey() { - RetWrap retWrap = api.genComposeKey("000", 'Y', "0404894E7B8DE129B4FF4EF9889E56A2129B4FF4EF9889E5"); - printRetWrap(retWrap); - } - - // 005130303030303030304759 - // 32 - // 583034303438393445374238444531323942344646344546393838394535364132 - // 583934443335443836454631463332313344353543343738323246383744333835 - // 3B - // 58 - // 58 - // 30 - - // 测试通过 - // GY - @Test - public void testGYGenComposeKey() { - String[] strs = {"X0404894E7B8DE129B4FF4EF9889E56A2", "X94D35D86EF1F3213D55C47822F87D385"}; - - RetWrap retWrap = api.genComposeKey(strArr2BytesStrArr(strs)); - printRetWrap(retWrap); - } - - // 测试通过 - // BY - @Test - public void testChangZMK2LMK() { - String[] strs = {"X0404894E7B8DE129B4FF4EF9889E56A2", "X94D35D86EF1F3213D55C47822F87D385"}; - RetWrap retWrap = api.changZMK2LMK(strs[0], strs[1]); - printRetWrap(retWrap); - } - - // 测试通过 - // IA - @Test - public void testGenZPK() { - RetWrap retWrap = api.genZPK("X94D35D86EF1F3213D55C47822F87D385"); - printRetWrap(retWrap); - } - - // 测试通过 - // FA - @Test - public void testTranZPKFromZMKToLMK() { - RetWrap retWrap = api.tranZPKFromZMKToLMK("X94D35D86EF1F3213D55C47822F87D385", "51101CCAFBFE8300"); - printRetWrap(retWrap); - } - - // 测试通过 - // GC - @Test - public void testTranZPKFromLMKToZMK() { - RetWrap retWrap = api.tranZPKFromLMKToZMK("X94D35D86EF1F3213D55C47822F87D385", "958FA085C014833A"); - printRetWrap(retWrap); - } - - // 测试通过 - // FI - @Test - public void testGenZEKOrZAK() { - RetWrap retWrap = api.genZEKOrZAK(0, "X94D35D86EF1F3213D55C47822F87D385"); - printRetWrap(retWrap); - } - - // 测试通过 - // FK - @Test - public void testTranZEAKFromZMKToLMK() { - RetWrap retWrap = api.tranZEAKFromZMKToLMK(0, "X94D35D86EF1F3213D55C47822F87D385", "3B4887E5E9FDF339"); - printRetWrap(retWrap); - } - - // 测试通过 - // FM - @Test - public void testTranZEAKFromLMKToZMK() { - RetWrap retWrap = api.tranZEAKFromLMKToZMK(0, "X94D35D86EF1F3213D55C47822F87D385", "1D969301FFA4FB13"); - printRetWrap(retWrap); - } - - // 测试通过 - // HC - @Test - public void testGenKeyByTMKOrTPKOrPVK() { - RetWrap retWrap = api.genKeyByTMKOrTPKOrPVK("X94D35D86EF1F3213D55C47822F87D385"); - printRetWrap(retWrap); - } - - // 测试通过 - // AE - @Test - public void testTranKeyByTMKToAno() { - RetWrap retWrap = api.tranKeyByTMKToAno("7E3F0E0A2335046B", "162FDF5B93DFE4B8"); - printRetWrap(retWrap); - } - - // 测试通过 - // FC - @Test - public void testTranKeyByTMKFromZMKToLMK() { - RetWrap retWrap = api.tranKeyByTMKFromZMKToLMK("X94D35D86EF1F3213D55C47822F87D385", "51101CCAFBFE8300"); - printRetWrap(retWrap); - } - - // 测试通过 - // FE - @Test - public void testTranKeyByTMKFromLMKToZMK() { - RetWrap retWrap = api.tranKeyByTMKFromLMKToZMK("X0404894E7B8DE129B4FF4EF9889E56A2", "X94D35D86EF1F3213D55C47822F87D385"); - printRetWrap(retWrap); - } - - // 测试通过 - // HA - @Test - public void testGenTAK() { - RetWrap retWrap = api.genTAK("X0404894E7B8DE129B4FF4EF9889E56A2"); - printRetWrap(retWrap); - } - - // 测试通过 - // MF - @Test - public void testTransTAKFromZMKToLMK() { - RetWrap retWrap = api.transTAKFromZMKToLMK("X94D35D86EF1F3213D55C47822F87D385", "X46928685CAFD050DBF5CCFC049E41BF5"); - printRetWrap(retWrap); - } - - // 测试通过 - // MG - @Test - public void testTransTAKFromLMKToZMK() { - RetWrap retWrap = api.transTAKFromLMKToZMK("X94D35D86EF1F3213D55C47822F87D385", "X36CC70E4274AA879AD9AE5596124DFA7"); - printRetWrap(retWrap); - } - - // 测试通过 - // AG - @Test - public void testTransTAKFromLMKToTMK() { - RetWrap retWrap = api.transTAKFromLMKToTMK("X94D35D86EF1F3213D55C47822F87D385", "X36CC70E4274AA879AD9AE5596124DFA7"); - printRetWrap(retWrap); - } - - // 测试通过 - // JA - @Test - public void testGenPIN() { - String s = api.genPIN("157212737811"); - System.out.println(s); - } - - // 00713030303030303030 - // 4343 - // 583034303438393445374238444531323942344646344546393838394535364132 - // 583934443335443836454631463332313344353543343738323246383744333835 - // 50 - // 31 - // 31 - // 3132 - // 33373532373544313235363334384341 - // 3031 - // 3031 - // 313537323132373337383131 - - // 测试通过 - // CC - @Test - public void testTransPINFromZPKToZPK() { - String s = api.transPINFromZPKToZPK("X0404894E7B8DE129B4FF4EF9889E56A2", "X94D35D86EF1F3213D55C47822F87D385", 1, 1, 1, 1, "375275D1256348CA", "157212737811"); - System.out.println(s); - } - - // 测试通过 - // JE - @Test - public void testTransPINFromZPKToLMK() { - String str = api.transPINFromZPKToLMK("X0404894E7B8DE129B4FF4EF9889E56A2", 1, 1, 01, "375275D1256348CA", "157212737811"); - System.out.println(str); - } - - // 测试通过 - // JG - @Test - public void testTransPINFromLMKToZPK() { - String s = api.transPINFromLMKToZPK("958FA085C014833A", 1, 1, 01, "54367430851C073B", "157212737811"); - System.out.println(s); - } - - // 测试通过 - // CA - @Test - public void testTransPINFromTPKToZPK() { - String s = api.transPINFromTPKToZPK("189A8A973A9FF7CF", "F4663B51F823CFDC", 1, 1, 1, 1, "5162F23A8354424E", "157212737811"); - System.out.println(s); - } - - // 测试通过 - // JC - @Test - public void testTransPINFromTPKToLMK() { - String zpk = "189A8A973A9FF7CF"; - String pin = "5162F23A8354424E"; - String s = api.transPINFromTPKToLMK(zpk, 1, 1, 1, pin, account); - System.out.println(s); - } - - // 测试通过 - // BA - @Test - public void testEncryPIN() { - String pin = "06157212FFFFFFFF"; - String s = api.encryPIN(0, pin, account); - System.out.println(s); - } - - // 测试通过 - // NG - @Test - public void testDecryPIN() { - String pin = "EB53196BFAD34C39"; - String s = api.decryPIN(0, pin, account); - System.out.println(s); - } - - - // 006E00000000000000004342303030303030584B303030303030303030303030303030313030303030303030303031584B30303030303030303030303030303032303030303030303030303250313131313239384430324231433742433945303130313135373231323733373831314E - - // 没有该指令 - // CB - @Test - public void testTransPinFrOneKeyToAno() { - String srcKey = "XK000000000000000100000000001"; - String desKey = "XK000000000000000200000000002"; - String sPin = "11298D02B1C7BC9E"; - String s = api.transPinFrOneKeyToAno("000", "000", srcKey, desKey, 1, 1, sPin, account); - System.out.println(s); - } - - // 003B3030303030303030 - // 4D41 - // 583430423631363946363334393530363034304236313639463633343935303630 - // 31353732313237333738313130303030 - - // 测试通过 - // MAXF - @Test - public void testMAC_Data() { - String key = "X40B6169F6349506040B6169F63495060"; - String macData = "1572127378110000"; - byte[] bytes = api.MAC_Data( key, macData, null); - - System.out.println(new String(bytes)); - } - - // 00000000 - // MA - // P - // 1 - // 0 - // 0 - // 1 - // XK122222222222222200312222222 - // 11110000 - - // 00300000000000000000 - // 4D41 - // 50 - // 31 - // 30 - // 30 - // 31 - // 584B313232323232323232323232323232323030333132323232323232 - // 31313131 - - // 测试通过 - // MA - @Test - public void testMACCalc() { - - String s = api.MACCalc(1, 0, "XK122222222222222200312222222", 0, "1111".getBytes(), 1); - System.out.println(s); - } - - // 003C0000000000000000 - // 4D43 - // 50 - // 31 - // 30 - // 30 - // 32 - // 584B313232323232323232323232323232323030333132323232323232 - // 3131313131313131 - // 3131313131313131 - - // 00383030303030303030 - // 4D43 - // 50 - // 31 - // 30 - // 30 - // 31 - // 584B313232323232323232323232323232323030333132323232323232 - // 31313131 - // 3131313131313131 - - // MC - @Test - public void testMACCheck() { - String AK = "XK122222222222222200312222222"; - - String s = api.MACCalc(1, 0, AK, 0, "1111".getBytes(), 1); - - api.MACCheck(1, 0, AK, 0, "1111".getBytes(), s); - } - - String key = "X40B6169F6349506040B6169F63495060"; - String msg = "AAAAAAAAAAAAAAAABBBBBBBBBBBBBBBB"; - - // 测试通过 - // MS - @Test - public void testGenMAB() { - RetWrap retWrap = api.genMAB(1, 0, 1, key, null, msg.getBytes()); - printRetWrap(retWrap); - } - - // 测试通过 - // MU - @Test - public void test_calcPBOCMAC() { - byte[] bytes = api._calcPBOCMAC(1, 0, key, msg.getBytes(), 1, null); - System.out.println(new String(bytes)); - } - - // 测试通过 - // E0 - @Test - public void testSYMEnDeData() { - String seesionKey = "XFD92E1D7C45FA56EAD2F4FC1E7898465"; - String pInData = "1111111111111111"; - String IV = "1111111111111111"; - - RetWrap retWrap = api.SYMEnDeData(true, 0, seesionKey, 2, 0, pInData.getBytes(), IV.getBytes(), 0); - printRetWrap(retWrap, true); - } - - // 00650000000000000000 - // 4530 - // 30 - // 38 - // 3230583643454537343433323934393942343236434545373434333239343939423432303031303030303230303030303030303030303030303030303030303030303030303030303030303030423131313131313131313131 - - // 测试通过 - // E0 - @Test - public void testSM4EncryptDataCBC() { - String key = "X6CEE744329499B426CEE744329499B42"; - String msg = "1111111111111111111111"; - byte[] bytes = api.SM4EncryptDataCBC(0, key, 0, 0 , msg.getBytes()); - printByteArray(bytes); - - } - - // 00200000000000000000 - // 4531 - // 303030 - // 303130 - // FF045D9DFA5DBE95CBC4285499719EF1 - - // 006A000000000000000245303039323058364345453734343332393439394234323643454537343433323934393942343230303130303030323030303030303030303030303030303030303030303030303030303030303030303130FF045D9DFA5DBE95CBC4285499719EF1 - // 测试通过 - // E0 - @Test - public void testSM4DecryptDataCBC() { - String key = "X6CEE744329499B426CEE744329499B42"; - String msg = "11111111111"; - byte[] bytes = api.SM4EncryptDataCBC(0, key, 0, 0 , msg.getBytes()); - System.out.println("输出为: " + Util.bytes2HexString(bytes)); - - byte[] bytes1 = api.SM4DecryptDataCBC(0, key, 0, 0, bytes); - - printByteArray(bytes1, false); - } - - // 00850000000000000000 - // 4530 - // 30 - // 38 - // 32 - // 30 - // 583643454537343433323934393942343236434545373434333239343939423432 - // 30 - // 30 - // 31 - // 30303030 - // 32 - // 3030303030303030303030303030303030303030303030303030303030303030 - // 303242 - // 31303130313131313131313131313131313131313131313030303030303030303031313131313131313131 - - // 测试通过 - // E0 - @Test - public void testSM4EncryptFileDataCBC() { - String key = "X6CEE744329499B426CEE744329499B42"; - String inFilePath = "C:\\Users\\edgar\\Desktop\\fsdownload\\test\\in.txt"; - String outFilePath = "C:\\Users\\edgar\\Desktop\\fsdownload\\test\\in2.txt"; - boolean b = api.SM4EncryptFileDataCBC(0, key, 0, 0, inFilePath, outFilePath); - System.out.println(b); - } - - - // 测试通过 - // E0 - @Test - public void testSM4DecryptFileDataCBC() throws UnsupportedEncodingException { - String key = "X6CEE744329499B426CEE744329499B42"; - String outFilePath = "C:\\Users\\edgar\\Desktop\\fsdownload\\test\\in2.txt"; - String outFilePath2 = "C:\\Users\\edgar\\Desktop\\fsdownload\\test\\out1.txt"; - boolean b = api.SM4DecryptFileDataCBC(0, key, 0, 0, outFilePath, outFilePath2); - System.out.println(b); - } - - // 测试通过 - // E0 - @Test - public void testEncDecData() { - - String msg = "1111111111111111111111"; - - /** - * 对称密钥产生 - * @param keyType 密钥类型 - * @param solution 密钥方案(LMK) 密钥长度/LMK下加密密钥的方案。 - * @return RetWrap 包含 - * lmkKey LMK LMK加密密钥 - * keyCheck 密钥校验值 - * - */ - RetWrap retWrap = api.genSymmetricKey("000", 'S'); - - byte[] lmkKey = (byte[]) retWrap.get("lmkKey"); - - String key = new String(lmkKey); - - System.out.println("对称密钥:" + key); - - /** - * 用输入的会话密钥,对指定报文数据进行加密处理。 - * - * @param nAlg  算法标识.,0x00:3DES,0x01:SM4。 - * @param seesionKey  本地LMK 加密的会话密钥,HEX 格式 - * @param pINdata  要加密的报文明文。必须是 8 或16 的倍数。 - * @return 输出的报文密文, 长度为报文明文 + 16 - */ - byte[] bytes = api.SYMEncryptDataCBC(1, key, msg.getBytes()); - - System.out.println("输出为: " + com.sunyard.proto.Util.bytes2HexString(bytes)); - - /** - * 用输入的会话密钥,对指定报文数据进行解密处理。 - * - * @param nAlg  算法标识.,0x00:3DES,0x01:SM4。 - * @param seesionKey 本地LMK 加密的会话密钥,HEX 格式 - * @param pINdata 要解密的报文密文。长度必须是8 或16 的倍数。 - * @return 输出的报文明文。 - */ - byte[] bytes1 = api.SYMDecryptDataCBC(1, key, bytes); - System.out.println("明文:" + new String(bytes1)); - } - - // 测试通过 - // E0 - @Test - public void testEncDecData1() { - - // 000000000000011100000000001 - String key = "XK000000000000011100000000001"; - - String msg = "111111111111111111qewehtrhq1"; - - byte[] bytes = api.SYMEncryptDataCBC(1, key, msg.getBytes()); - - System.out.println("输出为: " + Util.bytes2HexString(bytes)); - - byte[] bytes1 = api.SYMDecryptDataCBC(1, key, bytes); - System.out.println("明文:" + new String(bytes1)); - } - - // 测试通过 - // E0 - @Test - public void testEncDecData2() { - - String userId = "0000000000000111"; - String index = "00000001"; - - String msg = "1011111111111111101"; - - byte[] bytes = api.SYMSM4EncDataByIndex(0, userId, index, msg.getBytes()); - - System.out.println("输出为: " + Util.bytes2HexString(bytes)); - - byte[] bytes1 = api.SYMSM4DecDataByIndex(0, userId, index, bytes); - System.out.println("明文:" + new String(bytes1)); - } - - @Test - public void testaaa() throws UnsupportedEncodingException { - String key = "X6CEE744329499B426CEE744329499B42"; - String inFilePath = "C:\\Users\\edgar\\Desktop\\fsdownload\\test\\in1.txt"; - String outFilePath = "C:\\Users\\edgar\\Desktop\\fsdownload\\test\\in2.txt"; - String outFilePath2 = "C:\\Users\\edgar\\Desktop\\fsdownload\\test\\out1.txt"; - - boolean b = api.SM4EncryptFileDataCBC(0, key, 0, 0, inFilePath, outFilePath); - System.out.println(b); - boolean c = api.SM4DecryptFileDataCBC(0, key, 0, 0, outFilePath, outFilePath2); - System.out.println(c); - } - - // 测试通过 - // Y0 - @Test - public void testSwitchEncryY() { - String sDEK = "X40B6169F6349506040B6169F63495060"; - String dDEK = "X94D35D86EF1F3213D55C47822F87D385"; - String infoData = "93B0FB7F609A16E0C2D6BD0AC4AE0297"; - - byte[] bytes = api.switchEncryY("000", 2, "001", 2, 1, sDEK, dDEK, infoData.getBytes(), "0"); - System.out.println(new String(bytes)); - } - - // 测试通过 - // LB - @Test - public void testLoadKey() { - String index = "000000000000000300000000004"; - String key = "X94D35D86EF1F3213D55C47822F87D385"; - Boolean check = api.loadKey(index, key, null); - System.out.println(check); - } - - // 从用户存储区获取对称密钥 - // 测试通过 - // LF - @Test - public void testReadKey() { - String index = "000000000000000100022222222"; - RetWrap retWrap = api.readKey(index); - printRetWrap(retWrap); - - System.out.println("aaaaaaaa: " + new String((byte[]) retWrap.get("key"))); - } - - // 测试通过 - // LG - @Test - public void testUpdateKey() { - String index = "000000000000000300000000003"; - String key = "X94D35D86EF1F3213D55C47822F87D385"; - Boolean aBoolean = api.updateKey(index, key, "0000000000000000"); - System.out.println(aBoolean); - } - - // 00A30000000000000000 - // 3737 - // 31 - // 30313238 - // 5E1A8F50696C737AFCA0D2F7093E90D3913204013C4A85072AA8D3CDBE1782860000000000000000000000000000000000000000000000000000000000000000C729A69AA23CA0736E5C223487DF211D51BAFFDCF06914CE2E855EF6DE0F42AB0000000000000000000000000000000000000000000000000000000000000000 - // 30303136 - // 46464646464646464646464646464646 - - // 测试通过 - // 77 - @Test - public void testEncryptByPk() { - String pk = "034200042E2980FEDC9DAB03EEE490D9382CA04F018D905EF7319152ADF6A47EF2E3675204B015B7D16AB015AC8C2F24D2E63F69B867E16BA47B0138A86D4461DAE568A6"; - String data = "FFFFFFFFFFFFFFFF"; - - byte[] bytes = api.encryptByPk(1, pk, data.getBytes()); - System.out.println(Util.bytes2HexString(bytes)); - } - - // 测试通过 - // 78 - @Test - public void testDecryptBySkC() { - // userId - String userId = "7777777777777779"; - String pk = "034200042E2980FEDC9DAB03EEE490D9382CA04F018D905EF7319152ADF6A47EF2E3675204B015B7D16AB015AC8C2F24D2E63F69B867E16BA47B0138A86D4461DAE568A6"; - String data = "FFFFFFFFFFFFFFFF"; - - byte[] bytes = api.encryptByPk(1, pk, data.getBytes()); - String encryptData = Util.bytes2HexString(bytes); - System.out.println("加密后的数据: " + encryptData); - - byte[] originalData = api.decryptBySkC(1, userId, Util.hexString2Bytes(encryptData)); - System.out.println("解密后的数据: " + Util.bytes2HexString(originalData)); - } - - // 79 - @Test - public void testEncryptBySk() { - String rsaKey = "000400001661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019415964EDC1D617DCEA0E332EC9AF01165091AE6599AD06F6E24CD73CEA2FDA0D6A2CCF6805EBF5C9523D2C2D4670F920B166489B2B752903BA739219FE9FD7A4ABA0AFA3D19C4E0C2957DA3999B1772C562C5CFDDB2DD545A786E3FF7F7376DA978234CA5A51A1C5EE8CFA1B3460356E8F8808799E5DC39646FEEEF2AC2CE38D281661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E0194157BA816DB8823AAF1661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E01941971D31BFA90FCBF88452F15691C90A6EF4BC3B39496C7B1BF6C0BFEFFFCACEE3E8D5E177AB8C77A7BB04430E6540650887251CCC5B5B94D0509161F46A13B8E2D5D3971BBA180007441CB72FCB0F12317ADFD52BE098931AAB5ECA412D7DCFCE707D51A95B6E5F5826A9637D947CB4E9A5544C4622099D427CC2F1C81C9166B61661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019415AFF74E24873502CBBE817497587F920D6DBB6AFAA3617ABC1003EF00C86BF4758C5997FD61408ED619FF7ADAA281D4AAEA98848D074F820CAD0CE68A86597231661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E01941724AD53411CB6FD50BF14981C35E8FFB53EB2D3993060C67D720924F5FA2DAFFE2222D94E8BD98FC5FC0BCD3D7F58E8268C3E1E88C7EFEE66E490C9BC744B3C91661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E01941B33F7E511B17707CC89F17D463C4B24E7344BD742C137E6FFBAC1080C28C6656F07DC88DECDAE7C984587E82E668BC54921BC78264BB06CF54E4D5BE75C019271661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E01941456204A062F7A9B68ECC8ACCB5234FD5DE4BCA71D1531251BAA67B1DAB49A0F7FDD0ED8DB217A3C5A753AD14868D912600C44DDE8879A22D6B7408C9E190169E1661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E0194123DD650FD6D8E766A5CDEE9D67715906A9591ACAA8FEFCA401494F18F79EAA439FB54C628493FEF624D71624C0CB17AA5E92B0EB97B1A26EF34C6809EC58D64A"; - String sm2Key = "0001000039003BABAA8C984A527E804591119F982BCDAB1F88BBA922D3B158BC23102DF10000000000000000000000000000000000000000000000000000000000000000"; - String data = "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"; - - api.encryptBySk(0, rsaKey, data.getBytes()); - } - - // 测试通过 - // 7B - @Test - public void testRSASignC() { - String userId = "1111111111111114"; - String data = "11111111"; - byte[] bytes = api.RSASignC(userId, 0, 1, data.getBytes()); - System.out.println(Util.bytes2HexString(bytes)); - } - - // 测试通过 - // 7C - @Test - public void testRSAVerify() { - String thisPublicKey = "308189028181009666F70AA6B013099E68A0EF5EE3504A2210287459D8DD5C3851D2E5FAB821DE379C743F9EA2747A5BD441AB6FEB297ABD0DC66AD116FA918493D85E0BB05CCD2C5089BD1D5963F0FBB85EE869D18BE32EEFF5776350127B64A9C58119F6A52A9718CD3E6E6F97454826B7A7707DEBF9B2E5AD8A6FC1965F2747682FF2FA24A10203010001"; - String data = "11111111"; - String userId = "1111111111111114"; - - byte[] bytes = api.RSASignC(userId, 0, 1, data.getBytes()); - String sign = Util.bytes2HexString(bytes); - System.out.println(sign); - - boolean b = api.RSAVerify(0, 1, Util.hexString2Bytes(thisPublicKey), data.getBytes(), Util.hexString2Bytes(sign)); - System.out.println(b); - } - - // 测试通过 - // 7D - @Test - public void testConutHash() { - String data = "0101010101010101"; -// RetWrap retWrap = api.conutHash(1, 0, data.getBytes(), null); - - String filterData = "67 E6 09 6A 85 AE 67 BB 72 F3 6E 3C 3A F5 4F A5 7F 52 0E 51 8C 68 05 9B AB D9 83 1F 19 CD E0 5B 80 00 00 00 00 00 00 00 30 31 30 31 30 31 30 31 30 31 30 31 30 31 30 31 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 10 00 00 00 20 00 00 00"; - RetWrap retWrap = api.conutHash(1, 3, data.getBytes(), Util.hexString2Bytes(changeStr(filterData))); - - System.out.println("hash:" + Util.bytes2HexString((byte[]) retWrap.get("hash"))); - } - - // 测试通过 - // 7E - @Test - public void testGetDNPublicKey() { - String dn = "C=CN,O=Sunyard,OU=8001,CN=8001"; - String s = api.GetDNPublicKey(0, dn.getBytes()); - System.out.println(s); - } - - // 测试通过 - // 7E - @Test - public void testSYD_SM2_Get_Dn_PublicKey_HA() { - String dn = "C=CN,O=Sunyard,OU=8001,CN=8001"; - String s = api.SYD_SM2_Get_Dn_PublicKey_HA(dn.getBytes(), 0); - System.out.println(s); - } - - // 测试通过 - // 80 - @Test - public void testSM2SignCustomized() { - String sn = "1004282452"; - String s = api.SM2SignCustomized(sn, "111".getBytes()); - System.out.println(s); - } - - // 测试通过 - // 81 - @Test - public void testSM2VerifyCustomized() { - String sn = "1004282451"; - String data = "111"; - String s = api.SM2SignCustomized(sn, data.getBytes()); - - boolean b = api.SM2VerifyCustomized(sn, data.getBytes(), s); - System.out.println(b); - } - - // 测试通过 - // E2 - @Test - public void testSM2GenKeyPair() { - RetWrap retWrap = api.SM2GenKeyPair(); - printRetWrap(retWrap, true); - } - - // 测试通过 - // E2 - @Test - public void testSM2OrRSAGenKeyPair() { - // 000 -// String index = "1111111111111147"; -// // 0342000422C4FC907E0BEC600C2070D675EFB65EAE3A628260FF5461DD5F8133CF7CF98530EF392D016B6487BA6148E9AC27BDD4E8D7404A310CB09335F50AEF00ADB068 - - // 001 -// String index = "1111111111111148"; - // 0342000450420312F4ABAD98AA8EFC1F8F8204BD9E2F752C59C25A4025E675EDA5FB2337A449E00241EFA4A2F76A6C58D9834D6F0AB1164652E9C588E0EBD539C8ECB9EF - - // 1111111111111151 000 00000001 - String index = "1111111111111151"; - // 03420004E5888368B9D5BC319FE48AB92123857E696EFB1A7E08D75DD5C3C5A5E9FA18099EFFCAFD61A0838527D36C7FA6AE8E2649FB89883FC44A494830CE642A03DC24 - // 000100009FBA90C22E18982D60022C683219F72DAAA1B878A094181381486FC5137B1B160000000000000000000000000000000000000000000000000000000000000000 - - // SM2 - RetWrap retWrap = api.SM2OrRSAGenKeyPair(1, index, 0); - - // RSA -// RetWrap retWrap = api.SM2OrRSAGenKeyPair(0, index, 1024); - printRetWrap(retWrap, true); - } - - // E4 - @Test - public void testGenKeyPair() { - RetWrap retWrap = api.genKeyPair(415, 0002); - printRetWrap(retWrap); - } - - // 测试通过 - // 72 - @Test - public void testSM2GenSessionKey() { - - String pk = "03 42 00 04 1C D4 73 54 86 7E 12 B9 D1 38 F0 98 41 3C 47 D4 2E DE B2 AD 40 2E AB 43 1C 0C 7A C2 FE 2D 6D E9 C6 72 73 C6 43 C7 09 F2 A7 49 18 89 41 B7 FA 7F 9F F1 4F 8E 7D 19 31 69 36 DB 4D 49 54 FF 38 19 "; - - RetWrap retWrap = api.SM2GenSessionKey(changeStr(pk)); - printRetWrap(retWrap); - } - - // 测试通过 - // 73 - @Test - public void testSM2ConfirmSessionKeyC() { - - String userId = "1111111111111151"; - - String pk="03420004E8582C0EF495E96D4FE20C8344097750546BD3EF3BE0E1931EF21D3977FBBC774264BA5D124EB9C72177556229B5FE289B2C15B3CD3BCA9F34C663A3B8EB851E"; - - RetWrap retWrap = api.SM2GenSessionKey(pk); - printRetWrap(retWrap); - - String cipherKey = (String) retWrap.get("CipherKey"); - - RetWrap retWrap1 = api.SM2ConfirmSessionKeyC(userId, cipherKey); - printRetWrap(retWrap1); - } - - // 测试通过 - // 73 - @Test - public void testSM2ConfirmSessionKey() { - - String pk="03420004AAFCB1EACA86272281A20FE1957EEB543AB97571048D5B6350C4227980D0F109A7D5797EC97D6D874D003C4AE7C5FBFFD755413264D85DA5B0AC61B6C661CA32"; - String sk="00010000A910C2C44646A5A43338F0F505A06AA91442BFD245082C7774F6C75247F2196F0000000000000000000000000000000000000000000000000000000000000000"; - RetWrap retWrap = api.SM2GenSessionKey(pk); - printRetWrap(retWrap); - - String cipherKey = (String) retWrap.get("CipherKey"); - - RetWrap retWrap1 = api.SM2ConfirmSessionKey(sk, cipherKey); - printRetWrap(retWrap1); - } - - // 75 - @Test - public void testSYD_SM2_Verify_HA() { - String orgData = "11111111111111"; - String pk="034200044BDBCE365B5DB87799EBBB78D871BEEA70A6B3BAAA2973FEDC4BF067F8F1D2A977D2BFA01562E9554F600FBBFCD0D04F50603FB225ABBEDE0DF346E5E4882F68"; - String sk="00010000B3A7643171ABFC00D30307025B2CC5826F20210F5112F5D4BE7A8E32C82067C00000000000000000000000000000000000000000000000000000000000000000"; - - byte[] oData = api.SM3Hash(pk, Util.hexString2Bytes(orgData)); - String s = api.SYD_SM2_Sign_HA(SydApi.DATA_HASH, Util.hexString2Bytes(sk), Util.hexString2Bytes(pk), oData); - - System.out.println("sign:" + s); - System.out.println("decBase64:" + Util.bytes2HexString(Util.decodeBase64(s))); - System.out.println("decBase64-1:" + Util.bytes2HexString(SYMUtil.base64SignAsDerSign(s))); - boolean b = api.SYD_SM2_Verify_HA(SydApi.DATA_HASH, Util.hexString2Bytes(pk), Util.hexString2Bytes(orgData), s); - System.out.println("验签结果: " + b); - } - - // 测试通过 - // 76 - @Test - public void testSM3Hash() { - - String userId = "1572127378000000"; - String publicKey = "03 42 00 04 1C D4 73 54 86 7E 12 B9 D1 38 F0 98 41 3C 47 D4 2E DE B2 AD 40 2E AB 43 1C 0C 7A C2 FE 2D 6D E9 C6 72 73 C6 43 C7 09 F2 A7 49 18 89 41 B7 FA 7F 9F F1 4F 8E 7D 19 31 69 36 DB 4D 49 54 FF 38 19"; - String msg = "0101010101010101"; - - RetWrap retWrap = api.SM3Hash(1, userId, Util.hexString2Bytes(changeStr(publicKey)), msg.getBytes(), null); - printRetWrap(retWrap, true); - } - - // 测试通过 - // 76 - @Test - public void testSM3Hash2() { - String publicKey = "0342000469DE3847DD6A66DA96DB8F2DCFA32E10E680FF2EF4A592079E7C3A44320BB15084E7CA9782A39B6E28F07C04FE00D68958A2605921E71712D56C1E4435A39FA5"; - String orgData = "FFFFFFFFFFFFFFFF"; - - byte[] hash = api.SM3Hash(publicKey, orgData.getBytes()); - - System.out.println("hash:" + Util.bytes2HexString(hash)); - } - - // 测试通过 - // 76 - @Test - public void testSM3Hash3() { - String orgData = "FFFFFFFFFFFFFFFF"; - - byte[] hash = api.SM3Hash(orgData.getBytes()); - - System.out.println("hash:" + Util.bytes2HexString(hash)); - } - - // 测试通过 - // 71 - @Test - public void testLMK2SM2() { - - String pk = "03 42 00 04 1C D4 73 54 86 7E 12 B9 D1 38 F0 98 41 3C 47 D4 2E DE B2 AD 40 2E AB 43 1C 0C 7A C2 FE 2D 6D E9 C6 72 73 C6 43 C7 09 F2 A7 49 18 89 41 B7 FA 7F 9F F1 4F 8E 7D 19 31 69 36 DB 4D 49 54 FF 38 19 "; - String key = "U5FAC0E768937E43D64FE2692F5F8C79F"; - - RetWrap retWrap = api.LMK2SM2(Util.hexString2Bytes(changeStr(pk)), key); - printRetWrap(retWrap, true); - } - - // 测试通过 - // 60 - @Test - public void testGetTransmissionKey() { - RetWrap retWrap = api.getTransmissionKey(); - printRetWrap(retWrap); - } - - // 61 - @Test - public void testRoleVerify() { -// api.roleVerify() - } - - // 68 - @Test - public void testDecryptAndEncryptByP() { - - String data = "FFFFFFFFFFFFFFFF"; - - String publicKey = "03420004549B6A1A09A5D0D9432C6829D443F85ED8785340FC1AB14118BB7637830C808F7A888DF0C4F988EA6FF2EE6C76ECD00C4B7CEC92CC8EA365F8EA291041CAB231"; - - byte[] bytes = api.SYMEncryptData(3,"XF356BCBA3204F6E6F356BCBA3204F6E6", 1, data.getBytes()); - String enData = Util.bytes2HexString(bytes); - System.out.println("加密:" + enData); - - RetWrap retWrap = api.decryptAndEncryptByP("XF356BCBA3204F6E6F356BCBA3204F6E6", bytes, 1, Util.hexString2Bytes(publicKey)); - printRetWrap(retWrap); - } - - // 69 - @Test - public void testDecryptAndEncryptByS() { - - } - - // 测试通过 - // Y8 - @Test - public void testGenerateRandom() { - String s = api.GenerateRandom(16); - System.out.println(s); - } - - // 测试通过 - // AB - @Test - public void testGetPlainText() { - String key = "U51B737CE0EE1A14A6411B64EDE56020B"; - - RetWrap r = api.getPlainText(key, 0); - printRetWrap(r); - } - - // 测试通过 - // 62 - @Test - public void testImpose() { - - String key = "U51B737CE0EE1A14A6411B64EDE56020B"; - String msg = "0101010101010101"; - - RetWrap retWrap = api.impose("002", key, msg.getBytes()); - printRetWrap(retWrap); - } - - // 测试通过 - // 63 - @Test - public void testVerifyImpose() { - - String key = "U51B737CE0EE1A14A6411B64EDE56020B"; - - String secret = "3DCA1AD1"; - - String msg = "0101010101010101"; - - Boolean aBoolean = api.verifyImpose("002", key, secret.getBytes(), msg.getBytes()); - System.out.println(aBoolean); - } - - // 测试通过 - // 64 - @Test - public void testEncryAndDecry() { - String key = "U51B737CE0EE1A14A6411B64EDE56020B"; - String infoData = "01010101"; - - RetWrap retWrap = api.encryAndDecry("002", key, infoData.getBytes()); - printRetWrap(retWrap, true); - } - - // 测试通过 - // 65 - @Test - public void testSwitchEncry() { - String srcKey = "U51B737CE0EE1A14A6411B64EDE56020B"; - String aimKey = "X94D35D86EF1F3213D55C47822F87D385"; - String infoData = "88888888"; - - RetWrap retWrap = api.switchEncry("002", srcKey, aimKey, infoData.getBytes()); - printRetWrap(retWrap, true); - } - - // 测试通过 - // 66 - @Test - public void testEncryAndDecry4PIN() { - String key = "U51B737CE0EE1A14A6411B64EDE56020B"; - String pin = "06156760"; - - byte[] bytes = api.encryAndDecry4PIN(key, pin.getBytes()); - - System.out.println(Util.bytes2HexString(bytes)); - } - - // 测试通过 - // 67 - @Test - public void testswitchEncry4PIN() { - String srcKey = "XK111111111111111200100000001"; - String aimKey = "XK111111111111111300100000001"; - String infoData = "61572122"; - - byte[] bytes = api.switchEncry4PIN(srcKey, aimKey, infoData.getBytes()); - System.out.println(Util.bytes2HexString(bytes)); - } - - // 测试通过 - // 6A - @Test - public void testGenerateDE() { - String dn = "1004282452"; - - RetWrap retWrap = api.generateDE(dn, (byte) 0x30); - printRetWrap(retWrap); - } - - // 001B3030303030303030 - // 3641 - // 30 - // 30 - // 30303130 - // 31303034323832343532 - // 58 - - // 测试通过 - // 6A - @Test - public void testGenerateDEByDn() { - String dn = "1004282452"; - - RetWrap retWrap = api.generateDEByDn(dn.getBytes(), 0, 0); - printRetWrap(retWrap); - } - - // 01210000000000000000 - // 3642 - // 3030 - // 30313932 - // 4D49474D416945417058426D4C43545A4D54543247454A677A576658634555645770376D64466E5A5A344F4972556E326E5145434948766C2F674534707448476D4748737739464844566D3357334F6E636B764D71325044766C38374657667742434250347175466B346243715A48735177585258614E712B576E6C664234634C6859762F59766D6777496F7541516A56685551545578666C50464C783357734D56703362426A6658567539426278796F6A2B6D4937686D774A665178416B3D - // 4C4246373430343745463846384343353532463039313838363233373639343241424637343034374546384638434335353246303931383836323337363934324132303034443039344339433336334445 - - // 00DE0000000000000001 - // 3642 - // 3030 - // 30 - // 31 - // 3031303034323832343532 - // 30313932 - // 4D49474D4169454167746A6D2F3364654C44754D5A6A5446454C44564D7A6A77336F4A527354772F4E37594A54536151517A63434944524A30317053787A346D7864364464504848337639726E617075564B4B6668664E6557576E4530324F354243414748696241702F2F64373538574D77574E78356A6E4B3458564E536F4D4C724A3271757056734747707677516A6F357969655A5A76624368354B6B4662494942642F426A3133436631504C556C5952614D4F416442633973744A35413D58 - - // 测试通过 - // 6B - @Test - public void testDecryptDE() { - String sn = "1004282452"; - RetWrap retWrap = api.generateDEByDn(sn.getBytes(), 0, 0); - String sessionKey = (String) retWrap.get("SessionKey"); - String CipherKey = (String) retWrap.get("CipherKey"); - String KCV = (String) retWrap.get("KCV"); - printRetWrap(retWrap); - - RetWrap retWrap1 = api.decryptDE(sn, CipherKey); - sessionKey = (String) retWrap1.get("SessionKey"); - printRetWrap(retWrap1); - } - - // 测试通过 - // 6B - @Test - public void testDecryptDE2() { - String sn = "1004282452"; -// String sn = "1FD9F2049860FD072F0CC71B072EBF9952E2784E"; - RetWrap retWrap = api.generateDE(sn, SydApi.ALG_SM4); - String CipherKey = (String) retWrap.get("CipherKey"); - printRetWrap(retWrap); - - System.out.println("解base64: " + Util.bytes2HexString(Base64.getDecoder().decode(CipherKey))); - - RetWrap retWrap1 = api.decryptDE(sn, CipherKey); - printRetWrap(retWrap1); - } - - - @Test - public void testDecryptDE3() { - String sn = "1004282452"; - - - /** - * 产生对称密钥,通过公钥加密生成网联格式的数字信封。 - * @param certSerial 对*方 X509 证书的序列号。 - * @param nAlg 算法标识,0:AES,1:SM4 - * @return RetWrap 包含 CipherKey, SessionKey, KCV - * CipherKey 公钥加密的会话密钥 ,BASE64 编码 - * SessionKey 本地LMK 加密的会话密钥,HEX 格式, 本地 LMK 加密的会话密钥长度,HEX 格式(不包括第 1 个字符),一般为 33 个 Bytes。默认输入值为缓冲区的大小。 - * KCV 会话密钥的检验值,HEX 格式,长度为 32H。 - */ - RetWrap retWrap = api.generateDEbyGS(sn, SydApi.ALG_SM4); - String CipherKey = (String) retWrap.get(SydApi.RET_CIPHER_KEY); - String sessionKey = (String) retWrap.get(SydApi.RET_SESSION_KEY); - printRetWrap(retWrap); - - /** - * 接收用私钥解密数字信封,还原对称密钥。 - * - * @param pCertSerial 输入。 对方 X509 证书的序列号。 - * @param pCipherKey 输入。 公钥加密的会话密钥,BASE64 编码 - * @return RetWrap 包含 SessionKey KCV - * SessionKey 输出。 本地LMK 加密的会话密钥,格式为:密钥类型|密钥密文,比如:02|密钥密文 - * KCV 会话密钥的检验值,HEX 格式,长度为 36H。 - */ - RetWrap retWrap1 = api.decryptDE(sn, CipherKey); - printRetWrap(retWrap1); - } - - @Test - public void testDecryptDE4() { - String sn = "1004282452"; - - RetWrap retWrap = api.generateDEbyGS(sn, "00001111222233"); - String CipherKey = (String) retWrap.get(SydApi.RET_CIPHER_KEY); - String sessionKey = (String) retWrap.get(SydApi.RET_SESSION_KEY); - printRetWrap(retWrap); - - byte[] decode = Base64.getDecoder().decode(CipherKey); - System.out.println("解base64: " + Util.bytes2HexString(decode)); - - RetWrap retWrap1 = api.decryptDE(sn, CipherKey); - printRetWrap(retWrap1); - } - - @Test - public void testDecryptDE5() throws UnsupportedEncodingException { - String dn = "C=CN,O=CFCA OCA1,OU=YCCA,OU=Individual-2,CN=YCCA@黄金交易所@Zhuangj@1"; - String oData = "00001111222233"; - - RetWrap retWrap = api.generateDEByDn(dn, oData); - String CipherKey = (String) retWrap.get(SydApi.RET_CIPHER_KEY); - String sessionKey = (String) retWrap.get(SydApi.RET_SESSION_KEY); - printRetWrap(retWrap); - - RetWrap retWrap1 = api.decryptDEByDN(dn, CipherKey); - printRetWrap(retWrap1); - } - - // 测试通过 - // 6C - @Test - public void testNetSign() { - String sn = "1004282451"; - /** - * 结果为der编码后再进行base64编码 - */ - String s = api.netSign(sn, "111".getBytes()); - - /** - * base64解码 - */ - byte[] bytes = Util.decodeBase64(s); - - /** - * 将der编码转为base64编码 - */ - String s1 = SYMUtil.derSign2Base64Sign(bytes); - System.out.println(s1); - - byte[] bytes1 = Util.decodeBase64(s1); - - System.out.println(Util.bytes2HexString(bytes1)); - } - - // 测试通过 - // 6D - @Test - public void testNetVerify() { - String sn = "1004282451"; - String data = "111"; - String s = api.netSign(sn, data.getBytes()); - - System.out.println("签名: " + s); - - boolean b = api.netVerify(sn, data.getBytes(), s); - System.out.println(b); - } - - // 测试通过 - // 6D - @Test - public void testNetGSSign() { - String sn = "1004282451"; - String data = "1111111111111111111111111111"; - - /** - * 用指定的证书私钥对指定的数据进行数字签名。 - * 最大签名原始数据为8161byte - * @param pCertSerial 输入。签名 X509 证书的序列号。 - * @param pOrgData 输入。 待签名的原始数据。 - * @return 签名数据(BASE64 编码)。 - */ - String sign = api.netGSSign(sn, data.getBytes()); - System.out.println("签名: " + sign); - - /** - * 用指定证书对指定的原始数据进行数字签名验证。 - * @param pCertSerial 输入。 签名 X509 证书的序列号。 - * @param pOrgData 输入。 待签名的原始数据。 - * @param pSignData 输入。 签名数据(BASE64 编码)。 - * @return true 表示验证正确;false 表示失败; - */ - boolean b = api.netGSVerify(sn, data.getBytes(), sign); - System.out.println(b); - } - - // 测试通过 - // 6D - @Test - public void testNetVerify2() { - String sn = "1004282451"; - String userId = "1234567812345678"; - String data = "111"; - String s = api.unPSign(sn, userId, data.getBytes()); - - boolean b = api.unPVerify(sn, userId, data.getBytes(), s); - System.out.println(b); - } - - // 测试通过 - // 6E - @Test - public void testGetX509SN() { - String dn = "C=CN,ST=ZJ,L=HZ,O=SUNYARD,OU=123456,CN=111"; - String s = api.getX509SN(0, dn.getBytes()); - System.out.println(s); - } - - // 测试通过 - // QQ - @Test - public void testRSAGetPublicKeyC() { - String userId = "1111111111111114"; - - String s = api.RSAGetPublicKeyC(userId, 0); - System.out.println(s); - } - - // 测试通过 - // QQ - @Test - public void testSM2GetPublicKeyC2() { - String userId = "1111111111111117"; - - String s = api.SM2GetPublicKeyC(userId, 0); - System.out.println(s); - } - - // 测试通过 - // QQ - @Test - public void testSM2GetPublicKeyC3() { - - String tag = "111111111111111800000000001"; - String s = api.SM2GetPublicKeyC(tag); - System.out.println(s); - } - - // 测试通过 - // QP - @Test - public void testSM2GetPrivateKeyC() { - String tag = "111111111111111800000000001"; - String s = api.SM2GetPrivateKeyC(tag); - System.out.println(s); - } - - // 测试通过 - // HI - @Test - public void testGetStatus() { - RetWrap status = api.getStatus(); - - printRetWrap(status); - } - - // 测试通过 - // HV - @Test - public void testGetVersion() { - RetWrap version = api.getVersion(null); - printRetWrap(version); - } - - // 测试通过 - // 8008 - @Test - public void testGetAllCert() throws UnsupportedEncodingException { - RetWrap allCert = api.getAllCert(2); - printRetWrap(allCert); - } - - // 测试通过 - // 8009 - @Test - public void testImportCert() throws IOException { - - String path = "E:\\work\\sunyard\\证书\\sm2.q\\sm2.q.enc.crt.pem"; - System.out.println(api.importCert(inputStream2ByteArray(path), "1234".getBytes())); - - try { - this.api.disconnect(); - } catch (Exception e) { - e.printStackTrace(); - } - } - - - @Test - public void testImportCert2() throws IOException { - - String cert2 = "-----BEGIN CERTIFICATE-----\n" + - "MIIB4TCCAYSgAwIBAgIIPJMAAAAAACswDAYIKoEcz1UBg3UFADAmMQswCQYDVQQG\n" + - "EwJDTjEXMBUGA1UEAwwOU3VueWFyZFNNMlJvb3QwHhcNMTcxMTE3MDIzMDUxWhcN\n" + - "MjMwMTI1MDIzMDUxWjBZMQswCQYDVQQGEwJDTjELMAkGA1UECAwCWkoxCzAJBgNV\n" + - "BAcMAkhaMQ4wDAYDVQQKDAVISkpZUzERMA8GA1UECwwIMDAwMDAwMDAxDTALBgNV\n" + - "BAMMBDIyMjIwWTATBgcqhkjOPQIBBggqgRzPVQGCLQNCAATxqegqlmc/lduzBaKR\n" + - "EyeNuPf78RA3wfJuhAv8zymLwQ6doefs1Iul+kMOukhfwY9aEhVdqws34FZMm2vs\n" + - "1+wXo2cwZTAOBgNVHQ8BAf8EBAMCAMAwEwYDVR0lBAwwCgYIKwYBBQUHAwEwHwYD\n" + - "VR0jBBgwFoAU93/arv8hxtk6eq2g+6z+AqVO1cEwHQYDVR0OBBYEFHfjFl72707A\n" + - "6s+YVuGvEuyvFWTMMAwGCCqBHM9VAYN1BQADSQAwRgIhALzg7+QW7RU4phv+4arE\n" + - "v0IOeaA6dtR8VT4Bwin9oHTWAiEA9kLESGiYm8L5Htf7GBXgH+pk7BJ68clml41B\n" + - "/ejZglI=\n" + - "-----END CERTIFICATE-----"; - - String cert = "-----BEGIN CERTIFICATE-----\n" + - "MIID3QYKKoEcz1UGAQQCAqCCA80wggPJAgEBMQ4wDAYIKoEcz1UBgxEFADAMBgoq\n" + - "gRzPVQYBBAIBoIICxDCCAsAwggJjoAMCAQICEBAAAAAAAAAAAAAAEEJYBCMwDAYI\n" + - "KoEcz1UBg3UFADBcMQswCQYDVQQGEwJDTjEwMC4GA1UECgwnQ2hpbmEgRmluYW5j\n" + - "aWFsIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MRswGQYDVQQDDBJDRkNBIFRFU1Qg\n" + - "U00yIE9DQTEwHhcNMjEwMTExMDk1MjI1WhcNMjIwMTExMDk1MjI1WjB2MQswCQYD\n" + - "VQQGEwJjbjEVMBMGA1UECgwMQ0ZDQSBURVNUIENBMQ8wDQYDVQQLDAZDQ0ZDQ0Ix\n" + - "FDASBgNVBAsMC0VudGVycHJpc2VzMSkwJwYDVQQDDCAwNDFAODkwNDI5MDA5OTk5\n" + - "RkRAQ0JDQ0AwMDAwMDAwMTBZMBMGByqGSM49AgEGCCqBHM9VAYItA0IABExU5zuJ\n" + - "3pVl49mS3rTBwUcPuiI/zDR/w117PkpCgJ7m0kGyyorj1h2bxM62PthpNy99KPnk\n" + - "9gEvS696ZE5s8LGjgeowgecwHwYDVR0jBBgwFoAUa/4Y2o9COqa4bbMuiIM6NKLB\n" + - "MOEwSAYDVR0gBEEwPzA9BghggRyG7yoBATAxMC8GCCsGAQUFBwIBFiNodHRwOi8v\n" + - "d3d3LmNmY2EuY29tLmNuL3VzL3VzLTE0Lmh0bTA5BgNVHR8EMjAwMC6gLKAqhiho\n" + - "dHRwOi8vdWNybC5jZmNhLmNvbS5jbi9TTTIvY3JsMTY4NzYuY3JsMAsGA1UdDwQE\n" + - "AwID6DAdBgNVHQ4EFgQUypxjmN7VBcoruhBRWmmFNv9yG1IwEwYDVR0lBAwwCgYI\n" + - "KwYBBQUHAwIwDAYIKoEcz1UBg3UFAANJADBGAiEA1IQTRQf5aaDJzzVxWLRml1ZS\n" + - "qQd9FPFeKZJnbzGQIQMCIQD/gY5+H1nytcVAx8hGtUPssklmI+9+vTdOF5LaKMR+\n" + - "jzGB3TCB2gIBATBwMFwxCzAJBgNVBAYTAkNOMTAwLgYDVQQKDCdDaGluYSBGaW5h\n" + - "bmNpYWwgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxGzAZBgNVBAMMEkNGQ0EgVEVT\n" + - "VCBTTTIgT0NBMQIQEAAAAAAAAAAAAAAQQlgEIzAMBggqgRzPVQGDEQUAMA0GCSqB\n" + - "HM9VAYItAQUABEYwRAIgXmjY/FIR8qudmZGsIQUivZDt3/73dGojVjj5L76OcJIC\n" + - "IAHu0G242uYPY2B8zMkGw7kQ1C1xgRipEmlC1GWwMCz0\n" + - "-----END CERTIFICATE-----"; - - String jgh = "00000000"; - System.out.println(api.importCert(Util.getSafeBytes(cert), null)); - } - - @Test - public void testimportCertAddHT() { - String cert1 = "MIIB4TCCAYSgAwIBAgIIPJMAAAAAACswDAYIKoEcz1UBg3UFADAmMQswCQYDVQQGEwJDTjEXMBUGA1UEAwwOU3VueWFyZFNNMlJvb3QwHhcNMTcxMTE3MDIzMDUxWhcNMjMwMTI1MDIzMDUxWjBZMQswCQYDVQQGEwJDTjELMAkGA1UECAwCWkoxCzAJBgNVBAcMAkhaMQ4wDAYDVQQKDAVISkpZUzERMA8GA1UECwwIMDAwMDAwMDAxDTALBgNVBAMMBDIyMjIwWTATBgcqhkjOPQIBBggqgRzPVQGCLQNCAATxqegqlmc/lduzBaKREyeNuPf78RA3wfJuhAv8zymLwQ6doefs1Iul+kMOukhfwY9aEhVdqws34FZMm2vs1+wXo2cwZTAOBgNVHQ8BAf8EBAMCAMAwEwYDVR0lBAwwCgYIKwYBBQUHAwEwHwYDVR0jBBgwFoAU93/arv8hxtk6eq2g+6z+AqVO1cEwHQYDVR0OBBYEFHfjFl72707A6s+YVuGvEuyvFWTMMAwGCCqBHM9VAYN1BQADSQAwRgIhALzg7+QW7RU4phv+4arEv0IOeaA6dtR8VT4Bwin9oHTWAiEA9kLESGiYm8L5Htf7GBXgH+pk7BJ68clml41B/ejZglI="; - - String cert2 = "MIID3QYKKoEcz1UGAQQCAqCCA80wggPJAgEBMQ4wDAYIKoEcz1UBgxEFADAMBgoqgRzPVQYBBAIBoIICxDCCAsAwggJjoAMCAQICEBAAAAAAAAAAAAAAEEJYBCMwDAYIKoEcz1UBg3UFADBcMQswCQYDVQQGEwJDTjEwMC4GA1" + - "UECgwnQ2hpbmEgRmluYW5jaWFsIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MRswGQYDVQQDDBJDRkNBIFRFU1QgU00yIE9DQTEwHhcNMjEwMTExMDk1MjI1WhcNMjIwMTExMDk1MjI1WjB2MQswCQYDVQQGEwJjbjEVMBMGA1UECgwMQ0ZDQSBURVNUIENBMQ8wDQYDVQQLDAZDQ0ZDQ0IxF" + - "DASBgNVBAsMC0VudGVycHJpc2VzMSkwJwYDVQQDDCAwNDFAODkwNDI5MDA5OTk5RkRAQ0JDQ0AwMDAwMDAwMTBZMBMGByqGSM49AgEGCCqBHM9VAYItA0IABExU5zuJ3pVl49mS3rTBwUcPuiI/zDR/w117PkpCgJ7m0kGyyorj1h2bxM62PthpNy99KPnk9gEvS696ZE5s8LGjgeowgecw" + - "HwYDVR0jBBgwFoAUa/4Y2o9COqa4bbMuiIM6NKLBMOEwSAYDVR0gBEEwPzA9BghggRyG7yoBATAxMC8GCCsGAQUFBwIBFiNodHRwOi8vd3d3LmNmY2EuY29tLmNuL3VzL3VzLTE0Lmh0bTA5BgNVHR8EMjAwMC6gLKAqhihodHRwOi8vdWNybC5jZmNhLmNvbS5jbi9TTTIvY3JsMTY4NzY" + - "uY3JsMAsGA1UdDwQEAwID6DAdBgNVHQ4EFgQUypxjmN7VBcoruhBRWmmFNv9yG1IwEwYDVR0lBAwwCgYIKwYBBQUHAwIwDAYIKoEcz1UBg3UFAANJADBGAiEA1IQTRQf5aaDJzzVxWLRml1ZSqQd9FPFeKZJnbzGQIQMCIQD/gY5+H1nytcVAx8hGtUPssklmI+9+vTdOF5LaKMR+jzGB3T" + - "CB2gIBATBwMFwxCzAJBgNVBAYTAkNOMTAwLgYDVQQKDCdDaGluYSBGaW5hbmNpYWwgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxGzAZBgNVBAMMEkNGQ0EgVEVTVCBTTTIgT0NBMQIQEAAAAAAAAAAAAAAQQlgEIzAMBggqgRzPVQGDEQUAMA0GCSqBHM9VAYItAQUABEYwRAIgXmjY/FIR8" + - "qudmZGsIQUivZDt3/73dGojVjj5L76OcJICIAHu0G242uYPY2B8zMkGw7kQ1C1xgRipEmlC1GWwMCz0"; - - System.out.println(cert2); - - String jgh = "00000000"; - - String DN = "C=CN,O=Sunyard,OU=8001,CN=8001"; - - String sign = api.SYD_DetachedSign(cert2.getBytes(), DN); - System.out.println("签名结果: " + sign); - - /** - * 上传指定证书到加密设备,并在证书前后加上begin和end - * @param certData 证书的字节数组 - * @param organizationId 机构号的字节数组 - * @return - */ - RetWrap retWrap = api.importCertAddHT(sign, null); - System.out.println(retWrap); - } - - @Test - public void testags() { - - String certData = "11111111111111111111111111111111111111111111111111111111111111111111111111"; - - final String head = "-----BEGIN CERTIFICATE-----\n"; - final String tail = "-----END CERTIFICATE-----"; - final String wrap = "\n"; - - int num = certData.length() % 64 == 0 ? certData.length() / 64: certData.length() / 64 + 1; - - StringBuilder sb = new StringBuilder(); - sb.append(head); - - for (int i = 0; i < num; i++) { - String substring; - if (i == num - 1) { - substring = certData.substring(i * 64); - } else { - substring = certData.substring(i * 64, (i + 1) * 64); - } - sb.append(substring).append(wrap); - } - sb.append(tail); - - System.out.println(sb); - } - - - String pUserId = "1572127378000000"; - String publicKey = "03420004C51A40A094B6A14500B2980603D68CA263FF1BA238AFB17BB8B791C5F444465A7" + - "49B68B4584C83E7BEF66DE2446177E14DBE0F32691F54B1636CC73334A1A94D"; - String orgData = "FFFFFFFFFFFFFFFF"; - String certId = "0000000011111112"; - - // 测试通过 - // 74 - @Test - public void testSM2SignC() { - String userId = "1111111111111113"; - String certNo = "1234567812345678"; - String thisPublicKey = "03420004549B6A1A09A5D0D9432C6829D443F85ED8785340FC1AB14118BB7637830C808F7A888DF0C4F988EA6FF2EE6C76ECD00C4B7CEC92CC8EA365F8EA291041CAB231"; - String thisOrgData = "FFFFFFFFFFFFFFFF"; - - String s = api.SM2SignC(userId, certNo, 1, Util.hexString2Bytes(thisPublicKey), thisOrgData.getBytes()); - System.out.println(s); - } - - // 测试通过 - // 74 - @Test - public void testSM2SignC2() { - String thisPublicKey = "03420004549B6A1A09A5D0D9432C6829D443F85ED8785340FC1AB14118BB7637830C808F7A888DF0C4F988EA6FF2EE6C76ECD00C4B7CEC92CC8EA365F8EA291041CAB231"; - String thisOrgData = "FFFFFFFFFFFFFFFF"; - - String s = api.SM2SignC(1, "111111111111111300000000001", Util.hexString2Bytes(thisPublicKey), thisOrgData.getBytes()); - System.out.println(s); - } - - // 测试通过 - // 74 - @Test - public void testSM2SignC3() { - String privateKey = "00010000D7DBFD26A371D3B5BA58D3ECA98EAEFC1BCB65FA0DBBCFBC551E4315B8B2A8700000000000000000000000000000000000000000000000000000000000000000"; - String thisPublicKey = "034200042E624577E3BF1A510804346D1054B9205D97B4579D6528C25CAE6B74E5CDD19774AFA17CD9017E6BCBD8D9F3903492CD5288932941583E113C804537B69CDD46"; - String thisOrgData = "FFFFFFFFFFFFFFFF"; - - String s = api.SM2SignC(0, privateKey, Util.hexString2Bytes(thisPublicKey), thisOrgData.getBytes()); - System.out.println(s); - } - - // 00C40000000000000001 - // 3735 - // 30303731 - // 3045022100E5C51AE465EB085AC0A864414617D50776F7E93F9026F5E88FD8C1DC9DB38E9F022048A6E3CBE58837012FFF4281C8B53B98DCFBD6C250F0CD153C640C53FF8D78FB - // 31 - // 3136 - // 31323334353637383132333435363738 - // 30303136 - // 46464646464646464646464646464646 - // 30303638 - // 03420004549B6A1A09A5D0D9432C6829D443F85ED8785340FC1AB14118BB7637830C808F7A888DF0C4F988EA6FF2EE6C76ECD00C4B7CEC92CC8EA365F8EA291041CAB231 - - // 测试通过 - // 75 - @Test - public void testSM2Verify2() { - String privateKey = "AAA87526B2A261FF5468E489CF5E1E832BED34C31DCDA5D5093247FC20F6A8A7"; - String thisPublicKey = "C6084B3C227D6AD9201F36122418BDB13016678FC68D61E96F03C56702CFAE27B0190F48E9E9F05D3F550F18F1E6028B6B54F44A0272E16A9436F459A9D706BE"; - String thisOrgData = "FFFFFFFFFFFFFFFF"; - - String s = api.SM2SignC(0, privateKey, Util.hexString2Bytes(thisPublicKey), thisOrgData.getBytes()); - - System.out.println(s); - boolean b = api.SM2Verify( Util.hexString2Bytes(thisPublicKey), thisOrgData.getBytes(), s); - System.out.println(b); - } - - @Test - public void testaaba() throws UnsupportedEncodingException { - String orgData = "30111020220210200002|+|12.35|+|1|+|301|+||+||+||+||-|85873323882200000022|+|1|+|310000|+|310069037013006623257|+|RMB|+|物料池预备数据测试十|+|310000|+|310069037013006522872|+|RMB|+|大批量加密测试二十|+|交通银行上海奉贤支行|+|301290050471|+|12.35|+|0|+|0|+||+|1|+|2022[0002]00021|+|20220210|+||+|1|+||+||+||+||+||+||+||+||+||+|0.00|+||+|0|+||-|"; - String pk = "03420004AE179895745EDF2C7822BA15487F9B2FCC978597780A4EF228EC5B70AC7073174B8F457505BE4611809932170730EA0D325A12971C6699B0E51943369E1802D2"; - String sign = "MEUCICCTC1KiPkaftcCRfvMRrrxG1cc21zPWqgDbQHUV7NCKAiEAjO+Kdixwp2mJu5OTdBbwqCOzWslmkZ3QVdxlTcUqKEo="; - - System.out.println("解密: " + Util.bytes2HexString(Base64.getDecoder().decode(sign))); - - boolean b = api.SM2Verify( Util .hexString2Bytes(pk), orgData.getBytes("gbk"), sign); - System.out.println(b); - } - - - // 75 - @Test - public void testaabac() throws UnsupportedEncodingException { - String orgData = "30111020220210200002|+|12.35|+|1|+|301|+||+||+||+||-|85873323882200000022|+|1|+|310000|+|310069037013006623257|+|RMB|+|物料池预备数据测试十|+|310000|+|310069037013006522872|+|RMB|+|大批量加密测试二十|+|交通银行上海奉贤支行|+|301290050471|+|12.35|+|0|+|0|+||+|1|+|2022[0002]00021|+|20220210|+||+|1|+||+||+||+||+||+||+||+||+||+|0.00|+||+|0|+||-|"; - - String pk = "03420004AE179895745EDF2C7822BA15487F9B2FCC978597780A4EF228EC5B70AC7073174B8F457505BE4611809932170730EA0D325A12971C6699B0E51943369E1802D2"; - String sign = "MEUCICCTC1KiPkaftcCRfvMRrrxG1cc21zPWqgDbQHUV7NCKAiEAjO+Kdixwp2mJu5OTdBbwqCOzWslmkZ3QVdxlTcUqKEo="; - - // 这里,不管是签名还是验签,都需要在外部做一次hash。 - byte[] hash = api.SM3Hash(pk, orgData.getBytes("gbk")); - - System.out.println("hash: " + Util.bytes2HexString(hash)); - - boolean b = api.SM2Verify(SydApi.DATA_HASH, Util.hexString2Bytes(pk), hash, sign); - System.out.println("验签结果: " + b); - } - - // 测试通过 - // 75 - @Test - public void testSM2Verify3() { - - String thisPublicKey = "034200048043AF118B45629857DB693105849B2617FED249D59DFD29BE9A891ADEE7441A2D8C62020953DAEF038184E0244310CF2123C507F26F5380FFECC8D53E79B24E"; - String thisOrgData = "FFFFFFFFFFFFFFFF"; - - String s = api.SM2SignC(1, "111111111111115100100000001", Util.hexString2Bytes(thisPublicKey), thisOrgData.getBytes()); - - // gVIu3Ng+/pysU8uwRKBgouhqqA5fA9Qtr6OpgL3KD8+M+m4XzKQcAydr+87XFeGzxiow0CEagbcffRgEtewR9w== - System.out.println(s); - System.out.println("DecBase64:" + Util.bytes2HexString(Base64.getDecoder().decode(s))); - boolean b = api.SM2Verify( Util.hexString2Bytes(thisPublicKey), thisOrgData.getBytes(), s); - System.out.println(b); - } - - // 测试通过 - // 75 - @Test - public void testSM2Verify() { - - String userId = "1111111111111149"; - String certNo = "1234567812345678"; - String thisPublicKey = "03420004080589A33A4DB304A3C48355761AC216B8BB5493966996E532B664A5B9CD8F1374F0DAACBF3F6D1F0E48E10DAA91889DB632FF4BE19D903502680D1AB56584D5"; - String thisOrgData = "FFFFFFFFFFFFFFFF"; - - String s = api.SM2SignC(userId, certNo, 1, Util.hexString2Bytes(thisPublicKey), thisOrgData.getBytes()); - - System.out.println(s); - boolean b = api.SM2Verify(certNo, 1, Util.hexString2Bytes(thisPublicKey), thisOrgData.getBytes(), s); - System.out.println(b); - } - - /** - * 外部做hash,避免当原始数据过长时解析参数时ByteBuffer长度不够时报错的问题 - */ - // 测试通过 - // 75 - @Test - public void testSM2SignAndVerify() { - String privateKey = "000100009FBA90C22E18982D60022C683219F72DAAA1B878A094181381486FC5137B1B160000000000000000000000000000000000000000000000000000000000000000"; - String thisPublicKey = "03420004E5888368B9D5BC319FE48AB92123857E696EFB1A7E08D75DD5C3C5A5E9FA18099EFFCAFD61A0838527D36C7FA6AE8E2649FB89883FC44A494830CE642A03DC24"; - String orgData = "11111111111111"; - - // 这里,不管是签名还是验签,都需要在外部做一次hash。 - byte[] hash = api.SM3Hash(thisPublicKey, orgData.getBytes()); - String s = api.SM2Sign(SydApi.DATA_HASH, Util.hexString2Bytes(privateKey), hash); - - System.out.println("decBase64:" + Util.bytes2HexString(Util.decodeBase64(s))); - boolean b = api.SM2Verify(SydApi.DATA_HASH, Util.hexString2Bytes(thisPublicKey), hash, s); - System.out.println("验签结果: " + b); - } - - // 测试通过 - // 77 - @Test - public void testSM2Encrypt() { - api.SM2Encrypt(Util.hexString2Bytes(publicKey), orgData.getBytes()); - } - - // 测试通过 - // 78 - @Test - public void testSM2DecryptC() { - String certId = "1111111111111151"; - String publicKey = "034200048043AF118B45629857DB693105849B2617FED249D59DFD29BE9A891ADEE7441A2D8C62020953DAEF038184E0244310CF2123C507F26F5380FFECC8D53E79B24E"; - String orgData = "FFFFFFFFFFF1111111111FFFFF"; - String s = api.SM2Encrypt(Util.hexString2Bytes(publicKey), orgData.getBytes()); - - System.out.println("加密后的数据: " + s); - System.out.println("解base64格式之后: " + Util.bytes2HexString(Base64.getDecoder().decode(s))); - byte[] pOrgData = SYMUtil.base64EnData2DerEnData(s); - System.out.println("加密后的数据解base64-2: " + Util.bytes2HexString(pOrgData)); - - byte[] bytes = api.SM2DecryptC(certId, s); - - System.out.println("decData:" + new String(bytes)); - } - - // 测试通过 - // 78 - @Test - public void testSYD_SM2_Encrypt() { - - String sk="000100001C9588B521C2ECDDF0515D2829F3EFB26E5FE3E49CF96E3438FFEB7363845A110000000000000000000000000000000000000000000000000000000000000000"; - String publicKey = "03420004A8A03F380DDD8C414980FCA5C0A981E190A4528BF87C9FDAA30881CEE9EC83CC3DB93AE1B4FF529A0D0D9D42EDFDCEB46470D1046EAC5E4F32C31083C72C050F"; - String orgData = "FFFFFFFFFFF1111111111FFFFF"; - - byte[] encData = api.SYD_SM2_Encrypt(Util.hexString2Bytes(publicKey), orgData.getBytes()); - System.out.println("加密后的数据: " + Util.bytes2HexString(encData)); - - byte[] bytes = api.SYD_SM2_Decrypt(Util.hexString2Bytes(sk), encData); - System.out.println("decData:" + new String(bytes)); - } - - // 测试通过 - // 78 - @Test - public void testSYD_SM2_Encrypt2() { - - String publicKey = "03420004A8A03F380DDD8C414980FCA5C0A981E190A4528BF87C9FDAA30881CEE9EC83CC3DB93AE1B4FF529A0D0D9D42EDFDCEB46470D1046EAC5E4F32C31083C72C050F"; - String orgData = "FFFFFFFFFFF1111111111FFFFF"; - String userId = "1111111111111148"; - - byte[] encData = api.SYD_SM2_Encrypt(Util.hexString2Bytes(publicKey), orgData.getBytes()); - System.out.println("加密后的数据: " + Util.bytes2HexString(encData)); - - byte[] bytes = api.decryptBySkC(1, userId, encData); - System.out.println("decData:" + new String(bytes)); - } - - // 测试通过 - // 78 - @Test - public void testSM2DecryptOrder() { - String certId = "1111111111111151"; - String publicKey = "034200048043AF118B45629857DB693105849B2617FED249D59DFD29BE9A891ADEE7441A2D8C62020953DAEF038184E0244310CF2123C507F26F5380FFECC8D53E79B24E"; - String orgData = "FFFFFFFFFFF1111111111FFFFF"; - String s = api.SM2EncryptOrder(Util.hexString2Bytes(publicKey), orgData.getBytes()); - - System.out.println("加密后的数据: " + s); - System.out.println("解base64格式之后: " + Util.bytes2HexString(Base64.getDecoder().decode(s))); - byte[] pOrgData = SYMUtil.base64EnData2DerEnDataC1C2C3(s); - System.out.println("加密后的数据解base64-2: " + Util.bytes2HexString(pOrgData)); - - byte[] bytes = api.SM2DecryptOrder(certId, s, SydApi.FOR_ENCRYPT); - - System.out.println("decData:" + new String(bytes)); - } - - // QQ - @Test - public void testSM2GetPublicKeyC() { - String s = api.SM2GetPublicKeyC("0000000000000001", 0); - System.out.println("获取到的公钥: " + s); - } - - // 测试通过 - // E0 - @Test - public void testSYMEncryptData() { - String sm4Key = "XF356BCBA3204F6E6F356BCBA3204F6E6"; - - byte[] bytes = api.SYMEncryptData(SydApi.NALG_SM4,sm4Key, "1111111111111111".getBytes()); - System.out.println("密文:" + Util.bytes2HexString(bytes)); - byte[] bytes1 = api.SYMDecryptData(SydApi.NALG_SM4, sm4Key, bytes); - System.out.println(new String(bytes1)); - } - - // 01100000000000000000800331433D434E2C4F3D53756E796172642C4F553D383030312C434E3D38303031000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003313131 - - // 测试通过 - // 8003 - @Test - public void testSYD_NakedSign() { - String dn = "C=CN,O=Sunyard,OU=8001,CN=8001"; - byte[] bytes = api.SYD_NakedSign("111".getBytes(), dn); - System.out.println(Util.bytes2HexString(bytes)); - } - - // 测试通过 - // 8004 - @Test - public void testSYD_NakedVerify() { - String dn = "C=CN,O=Sunyard,OU=8001,CN=8001"; - String orgData = "111"; - byte[] bytes = api.SYD_NakedSign(orgData.getBytes(), dn); - String sign = Util.bytes2HexString(bytes); - System.out.println(sign); - - boolean b = api.SYD_NakedVerify(orgData.getBytes(), bytes, dn); - System.out.println(b); - } - - // 测试通过 - // 8005 - @Test - public void testSYD_DetachedSign() { - - String orgData = "3214312341243214"; - String DN = "C=CN,O=Sunyard,OU=8001,CN=8001"; - String s = api.SYD_DetachedSign(orgData.getBytes(), DN); - System.out.println(s); - } - - // 测试通过 - // 8006 - @Test - public void testSYD_DetachedVerify() { - String orgData = "3214312341243214"; - String DN = "C=CN,O=Sunyard,OU=8001,CN=8001"; - String sign = api.SYD_DetachedSign(orgData.getBytes(), DN); - System.out.println("签名结果: " + sign); - - boolean b = api.SYD_DetachedVerify(orgData.getBytes(), sign); - System.out.println("验签结果:" + b); - } - - // 8012 - @Test - public void testSYD_Get_X509_CertInfo_HA() { - - String orgData = "3214312341243214"; - String DN = "C=CN,O=Sunyard,OU=8001,CN=8001"; - String s = api.SYD_DetachedSign(orgData.getBytes(), DN); - System.out.println(s); - - X509 x509 = api.SYD_Get_X509_CertInfo_HA(orgData.getBytes(), s); - System.out.println(x509); - } - - // 8012 - @Test - public void testSYD_Get_X509_CertInfo_HA1() { - - String orgData = "\n" + - "\n" + - " \n" + - " \n" + - " 20211230001190300000000032001000\n" + - " 2021-12-30T09:27:49\n" + - " \n" + - " G4000131000016\n" + - " \n" + - " \n" + - " C1175662000017\n" + - " \n" + - " \n" + - " \n" + - " CC00\n" + - " CS01\n" + - " \n" + - " \n" + - ""; - - String sign = "MIID3QYKKoEcz1UGAQQCAqCCA80wggPJAgEBMQ4wDAYIKoEcz1UBgxEFADAMBgoqgRzPVQYBBAIBoIICxDCCAsAwggJjoAMCAQICEBAAAAAAAAAAAAAAEEJYBCMwDAYIKoEcz1UBg3UFADBcMQswCQYDVQQGEwJDTjEwMC4GA1" + - "UECgwnQ2hpbmEgRmluYW5jaWFsIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MRswGQYDVQQDDBJDRkNBIFRFU1QgU00yIE9DQTEwHhcNMjEwMTExMDk1MjI1WhcNMjIwMTExMDk1MjI1WjB2MQswCQYDVQQGEwJjbjEVMBMGA1UECgwMQ0ZDQSBURVNUIENBMQ8wDQYDVQQLDAZDQ0ZDQ0IxF" + - "DASBgNVBAsMC0VudGVycHJpc2VzMSkwJwYDVQQDDCAwNDFAODkwNDI5MDA5OTk5RkRAQ0JDQ0AwMDAwMDAwMTBZMBMGByqGSM49AgEGCCqBHM9VAYItA0IABExU5zuJ3pVl49mS3rTBwUcPuiI/zDR/w117PkpCgJ7m0kGyyorj1h2bxM62PthpNy99KPnk9gEvS696ZE5s8LGjgeowgecw" + - "HwYDVR0jBBgwFoAUa/4Y2o9COqa4bbMuiIM6NKLBMOEwSAYDVR0gBEEwPzA9BghggRyG7yoBATAxMC8GCCsGAQUFBwIBFiNodHRwOi8vd3d3LmNmY2EuY29tLmNuL3VzL3VzLTE0Lmh0bTA5BgNVHR8EMjAwMC6gLKAqhihodHRwOi8vdWNybC5jZmNhLmNvbS5jbi9TTTIvY3JsMTY4NzY" + - "uY3JsMAsGA1UdDwQEAwID6DAdBgNVHQ4EFgQUypxjmN7VBcoruhBRWmmFNv9yG1IwEwYDVR0lBAwwCgYIKwYBBQUHAwIwDAYIKoEcz1UBg3UFAANJADBGAiEA1IQTRQf5aaDJzzVxWLRml1ZSqQd9FPFeKZJnbzGQIQMCIQD/gY5+H1nytcVAx8hGtUPssklmI+9+vTdOF5LaKMR+jzGB3T" + - "CB2gIBATBwMFwxCzAJBgNVBAYTAkNOMTAwLgYDVQQKDCdDaGluYSBGaW5hbmNpYWwgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxGzAZBgNVBAMMEkNGQ0EgVEVTVCBTTTIgT0NBMQIQEAAAAAAAAAAAAAAQQlgEIzAMBggqgRzPVQGDEQUAMA0GCSqBHM9VAYItAQUABEYwRAIgXmjY/FIR8" + - "qudmZGsIQUivZDt3/73dGojVjj5L76OcJICIAHu0G242uYPY2B8zMkGw7kQ1C1xgRipEmlC1GWwMCz0"; - - - - X509 x509 = api.SYD_Get_X509_CertInfo_HA(orgData.getBytes(), sign); - System.out.println(Util.bytes2HexString(x509.getPubKey())); - } - - // 测试通过 - // 8016 - @Test - public void testGetX509CertInfo() { - -// String pCert = "-----BEGIN CERTIFICATE-----\u0007MIIC1jCCAnqgAwIBAgIFQAKAAXQwDAYIKoEcz1UBg3UFADBhMQswCQYDVQQGEwJD\u0007TjEwMC4GA1UECgwnQ2hpbmEgRmluYW5jaWFsIENlcnRpZmljYXRpb24gQXV0aG9y\u0007aXR5MSAwHgYDVQQDDBdDRkNBIEFDUyBURVNUIFNNMiBPQ0EzMTAeFw0xNzExMTYw\u0007NjU0NDVaFw0yMjExMTYwNjU0NDVaMIGDMQswCQYDVQQGEwJDTjEcMBoGA1UECgwT\u0007Q0ZDQSBURVNUIFNNMiBPQ0EzMTEOMAwGA1UECwwFU0hDUEUxGTAXBgNVBAsMEE9y\u0007Z2FuaXphdGlvbmFsLTExKzApBgNVBAMMIjA1MUDkuIrmtbfnpajmja7kuqTmmJPm\u0007iYBAQUFBQUFBQDgwWTATBgcqhkjOPQIBBggqgRzPVQGCLQNCAARg8D1RBEv9lpOE\u0007Q3SdzdLCQ4fDiE8Ncb2Fl4qIGc12GA/LUS1fgzLZuk0WlgyZDSe+QlQziqkmsXsx\u0007KoTCzqsto4H5MIH2MD8GCCsGAQUFBwEBBDMwMTAvBggrBgEFBQcwAYYjaHR0cDov\u0007L29jc3B0ZXN0LmNmY2EuY29tLmNuOjgwL29jc3AwHwYDVR0jBBgwFoAUBMe8+VkB\u0007aT6MNDYgYhg83ry1uwwwDAYDVR0TAQH/BAIwADA2BgNVHR8ELzAtMCugKaAnhiVo\u0007dHRwOi8vMjEwLjc0LjQyLjMvT0NBMzEvU00yL2NybDEuY3JsMA4GA1UdDwEB/wQE\u0007AwIGwDAdBgNVHQ4EFgQUomdLtdhENYb16pe1LNRlcr4N7b8wHQYDVR0lBBYwFAYI\u0007KwYBBQUHAwIGCCsGAQUFBwMEMAwGCCqBHM9VAYN1BQADSAAwRQIgZpJGhpRKmgfi\u0007Vbdq3UAGW6I3AUMfbWMd6webLQXmCOoCIQDSxTKRb0TfoXepD3VgO9qxCDwSc4yn\u0007WJ2GC3qmr81QBg==\u0007-----END CERTIFICATE-----\u0007"; -// X509 x509 = api.GetX509CertInfo(pCert); - +//package com.sunyard.sydapi.test; +// +//import com.sunyard.RetWrap; +//import com.sunyard.SydApi; +//import com.sunyard.SydApiException; +//import com.sunyard.cert.X509; +//import com.sunyard.proto.Util; +//import com.sunyard.util.CoderUtil; +//import com.sunyard.util.SYMUtil; +//import org.junit.After; +//import org.junit.Before; +//import org.junit.Test; +//import racal.sunyard.main.SydApi4j; +// +//import java.io.*; +//import java.lang.reflect.Method; +//import java.net.InetSocketAddress; +//import java.net.Socket; +//import java.net.SocketAddress; +//import java.nio.ByteBuffer; +//import java.nio.charset.StandardCharsets; +//import java.util.Base64; +// +//import static com.sunyard.sydapi.util.PrintUtil.printByteArray; +//import static com.sunyard.sydapi.util.PrintUtil.printRetWrap; +// +///** +// * 所有方法的测试类 +// */ +//public class TestAllMethods { +// +// SydApi4j api; +// +// String account = "157212737811"; +// +// @Before +// public void before() { +// // 通过设置debug的属性开启debug,如果不设置则默认不打开 +// System.setProperty("com.sunyard.sydapi4j.debug", "true"); +//// api = (SydApi4j) new SydApi4j().connect("172.16.18.59", 8889, null, 1000); +//// api = (SydApi4j) new SydApi4j().connect("192.168.0.119", 8889, null, 1000); +//// api = (SydApi4j) new SydApi4j().connect("61.164.40.82", 8889, null, 1000); +//// api = (SydApi4j) new SydApi4j().connect("192.168.0.66", 8889, null, 1000); +// api = (SydApi4j) new SydApi4j().connect("192.168.0.100", 8889, null, 1000); +//// api = (SydApi4j) new SydApi4j().connect("192.168.0.99", 8889, null, 1000); +//// api = (SydApi4j) new SydApi4j().connect("172.16.17.162", 8889, null, 1000); +//// api = (SydApi4j) new SydApi4j().connect("192.168.1.7", 8889, null, 5000); +// } +// +// // 测试通过 +// // Y8 +// @Test +// public void testLink() { +// String s = api.GenerateRandom(16); +// System.out.println(s); +// } +// +// @After +// public void after() { +// try { +// this.api.disconnect(); +// } catch (Exception e) { +// e.printStackTrace(); +// } +// } +// +// // 获取证书 +// public String getCertStr(String path) { +// +// BufferedInputStream bis = null; +// try { +// bis = new BufferedInputStream(new FileInputStream(path)); +// +// StringBuilder str = new StringBuilder(); +// +// int len = 0; +// +// while ((len = bis.read()) != -1) { +// str.append((char) len); +// } +// +// return str.toString(); +// } catch (IOException e) { +// e.printStackTrace(); +// } finally { +// if (bis != null) { +// try { +// bis.close(); +// } catch (IOException e) { +// e.printStackTrace(); +// } +// } +// } +// +// return null; +// } +// +// /** +// * 将hex类型的数组转为byte型 +// * {"X0404894E7B8DE129B4FF4EF9889E56A2", "X94D35D86EF1F3213D55C47822F87D385"} +// * 转为 +// * [583034303438393445374238444531323942344646344546393838394535364132, 583934443335443836454631463332313344353543343738323246383744333835] +// * @param strs +// * @return +// */ +// public String[] strArr2BytesStrArr(String[] strs) { +// String[] requestStrs = new String[strs.length]; +// +// for (int i = 0, len = strs.length; i < len; i++) { +// String changeStr = Util.bytes2HexString(strs[i].getBytes()); +// requestStrs[i] = changeStr; +// } +// +// return requestStrs; +// } +// +// /** +// * 删除字符串中的空格 +// * @param str +// * @return +// */ +// public String changeStr(String str) { +// return str.replaceAll(" ", ""); +// } +// +// +// /** +// * 读取文件中的信息,返回byte数组 +// * @param filePath 文件路径 +// * @return +// */ +// public byte[] inputStream2ByteArray(String filePath) { +// +// BufferedInputStream in = null; +// ByteArrayOutputStream out = null; +// byte[] data = null; +// try { +// in = new BufferedInputStream(new FileInputStream(filePath)); +// +// out = new ByteArrayOutputStream(); +// +// byte[] buffer = new byte[1024 * 4]; +// int n = 0; +// while ((n = in.read(buffer)) != -1) { +// out.write(buffer, 0, n); +// } +// +// data = out.toByteArray(); +// } catch (IOException e) { +// e.printStackTrace(); +// } finally { +// +// if (in != null) { +// try { +// in.close(); +// } catch (IOException e) { +// e.printStackTrace(); +// } +// } +// +// if (out != null) { +// try { +// out.close(); +// } catch (IOException e) { +// e.printStackTrace(); +// } +// } +// } +// +// return data; +// } +// +// /** +// * 自己发送及接收 +// * @throws IOException +// */ +// @Test +// public void testSendData() throws IOException { +// String msg = "000D00000000000000005938303136"; +// +// String ip = "172.16.18.59"; +// int port = 8889; +// int timeout = 1000; +// +// // 连接socket +// Socket socket = new Socket(); +// SocketAddress address = new InetSocketAddress(ip, port); +// +// try { +// socket.connect(address, timeout); +// socket.setSoTimeout(timeout); +// } catch (IOException e) { +// e.printStackTrace(); +// } +// +// InputStream is = null; +// try { +// // 发送数据 +// socket.getOutputStream().write(Util.hexString2Bytes(msg)); +// // 接收数据 +// is = socket.getInputStream(); +// } catch (IOException e) { +// e.printStackTrace(); +// } +// +// // 处理数据 +// int d; +// int high = is.read(); +// int low = is.read(); +// // 计算数据总长度 +// int len = (high << 8) + low; +// +// len += 2; +// +// // 创建ByteBuffer +// ByteBuffer bb = ByteBuffer.allocate(len); +// bb.put((byte) (high & 0xFF)); +// +// bb.put((byte) (low & 0xFF)); +// +// // 将数据放入ByteBuffer中 +// while ((d = is.read()) != -1) { +// +// bb.put((byte) (d & 0xFF)); +// if (bb.position() == len) { +// break; +// } +// } +// +// System.out.println("返回的hex: " + Util.bytes2HexString(bb.array())); +// } +// +// +// // A0 1.1.1 对称密钥产生, +// // 测试通过 +// // A0 +// @Test +// public void testGenSymmetricKey() { +// RetWrap retWrap = api.genSymmetricKey("000", 'X'); +// +// printRetWrap(retWrap); +// } +// +// // 002D3030303030303030 +// // 4130 +// // 31 +// // 303030 +// // 58 +// // 534B393939393939393939393939303030303030303030303030303030 +// // 58 +// +// // A0 1.1.2 对称密钥产生, 对比之前添加了可产生ZMK加密下的密钥, +// // 测试通过 +// // A0 +// @Test +// public void testGenSymKey() { +// // 此密钥方案为: 1A+K+27位的索引号 +// RetWrap retWrap = api.genSymKey(1, "000", 'X', "SK999999999999000000000000000"); +// +// printRetWrap(retWrap); +// } +// +// // 00000000 +// // A4 +// // 2 +// // 000 +// // X +// // 密钥成份1:X0404894E7B8DE129B4FF4EF9889E56A2 +// // 密钥成份2:X94D35D86EF1F3213D55C47822F87D385 +// +// // 003300000000000000004135 +// // 3030 +// // 58 +// // 4639334538393745423345383636413346314233324432303232324245333446 +// // 314246383237 +// +// // 测试通过 +// // A4 +// @Test +// public void testComposeKey() { +// String[] strs = {"583034303438393445374238444531323942344646344546393838394535364132", "583934443335443836454631463332313344353543343738323246383744333835"}; +// RetWrap rw = api.composeKey("000", strs); +// +// printRetWrap(rw); +// } +// +// // 00503030303030303030 +// // 4136 +// // 303030 +// // 584141414141414141414141414141414142424242424242424242424242424242 +// // 583934443335443836454631463332313344353543343738323246383744333835 +// // 58 +// +// // 00000000 +// // A6 +// // 000 +// // ZMK:XAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBB +// // ZMK下加密的密钥:X94D35D86EF1F3213D55C47822F87D385 +// // X +// +// // 测试通过 +// // A6 +// @Test +// public void testInputKey() { +// RetWrap retWrap = api.inputKey("000", 'X', "XAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBB", "X94D35D86EF1F3213D55C47822F87D385"); +// +// printRetWrap(retWrap); +// } +// +// // 00000000 +// // A8 +// // 000 +// // XAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBB +// // X0404894E7B8DE129B4FF4EF9889E56A2 +// // X +// +// // 测试通过 +// // A8 +// @Test +// public void testOutputKey() { +// RetWrap retWrap = api.outputKey("000", 'X', "XAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBB", "X94D35D86EF1F3213D55C47822F87D385"); +// printRetWrap(retWrap); +// } +// +// // 测试通过 +// // B0 +// @Test +// public void testConversionKey() { +// RetWrap retWrap = api.conversionKey("000", "X0404894E7B8DE129B4FF4EF9889E56A2", 'U'); +// printRetWrap(retWrap); +// } +// +// // 测试通过 +// // AA +// @Test +// public void testAAGenComposeKey() { +// RetWrap retWrap = api.genComposeKey("000", 'Y', "0404894E7B8DE129B4FF4EF9889E56A2129B4FF4EF9889E5"); +// printRetWrap(retWrap); +// } +// +// // 005130303030303030304759 +// // 32 +// // 583034303438393445374238444531323942344646344546393838394535364132 +// // 583934443335443836454631463332313344353543343738323246383744333835 +// // 3B +// // 58 +// // 58 +// // 30 +// +// // 测试通过 +// // GY +// @Test +// public void testGYGenComposeKey() { +// String[] strs = {"X0404894E7B8DE129B4FF4EF9889E56A2", "X94D35D86EF1F3213D55C47822F87D385"}; +// +// RetWrap retWrap = api.genComposeKey(strArr2BytesStrArr(strs)); +// printRetWrap(retWrap); +// } +// +// // 测试通过 +// // BY +// @Test +// public void testChangZMK2LMK() { +// String[] strs = {"X0404894E7B8DE129B4FF4EF9889E56A2", "X94D35D86EF1F3213D55C47822F87D385"}; +// RetWrap retWrap = api.changZMK2LMK(strs[0], strs[1]); +// printRetWrap(retWrap); +// } +// +// // 测试通过 +// // IA +// @Test +// public void testGenZPK() { +// RetWrap retWrap = api.genZPK("X94D35D86EF1F3213D55C47822F87D385"); +// printRetWrap(retWrap); +// } +// +// // 测试通过 +// // FA +// @Test +// public void testTranZPKFromZMKToLMK() { +// RetWrap retWrap = api.tranZPKFromZMKToLMK("X94D35D86EF1F3213D55C47822F87D385", "51101CCAFBFE8300"); +// printRetWrap(retWrap); +// } +// +// // 测试通过 +// // GC +// @Test +// public void testTranZPKFromLMKToZMK() { +// RetWrap retWrap = api.tranZPKFromLMKToZMK("X94D35D86EF1F3213D55C47822F87D385", "958FA085C014833A"); +// printRetWrap(retWrap); +// } +// +// // 测试通过 +// // FI +// @Test +// public void testGenZEKOrZAK() { +// RetWrap retWrap = api.genZEKOrZAK(0, "X94D35D86EF1F3213D55C47822F87D385"); +// printRetWrap(retWrap); +// } +// +// // 测试通过 +// // FK +// @Test +// public void testTranZEAKFromZMKToLMK() { +// RetWrap retWrap = api.tranZEAKFromZMKToLMK(0, "X94D35D86EF1F3213D55C47822F87D385", "3B4887E5E9FDF339"); +// printRetWrap(retWrap); +// } +// +// // 测试通过 +// // FM +// @Test +// public void testTranZEAKFromLMKToZMK() { +// RetWrap retWrap = api.tranZEAKFromLMKToZMK(0, "X94D35D86EF1F3213D55C47822F87D385", "1D969301FFA4FB13"); +// printRetWrap(retWrap); +// } +// +// // 测试通过 +// // HC +// @Test +// public void testGenKeyByTMKOrTPKOrPVK() { +// RetWrap retWrap = api.genKeyByTMKOrTPKOrPVK("X94D35D86EF1F3213D55C47822F87D385"); +// printRetWrap(retWrap); +// } +// +// // 测试通过 +// // AE +// @Test +// public void testTranKeyByTMKToAno() { +// RetWrap retWrap = api.tranKeyByTMKToAno("7E3F0E0A2335046B", "162FDF5B93DFE4B8"); +// printRetWrap(retWrap); +// } +// +// // 测试通过 +// // FC +// @Test +// public void testTranKeyByTMKFromZMKToLMK() { +// RetWrap retWrap = api.tranKeyByTMKFromZMKToLMK("X94D35D86EF1F3213D55C47822F87D385", "51101CCAFBFE8300"); +// printRetWrap(retWrap); +// } +// +// // 测试通过 +// // FE +// @Test +// public void testTranKeyByTMKFromLMKToZMK() { +// RetWrap retWrap = api.tranKeyByTMKFromLMKToZMK("X0404894E7B8DE129B4FF4EF9889E56A2", "X94D35D86EF1F3213D55C47822F87D385"); +// printRetWrap(retWrap); +// } +// +// // 测试通过 +// // HA +// @Test +// public void testGenTAK() { +// RetWrap retWrap = api.genTAK("X0404894E7B8DE129B4FF4EF9889E56A2"); +// printRetWrap(retWrap); +// } +// +// // 测试通过 +// // MF +// @Test +// public void testTransTAKFromZMKToLMK() { +// RetWrap retWrap = api.transTAKFromZMKToLMK("X94D35D86EF1F3213D55C47822F87D385", "X46928685CAFD050DBF5CCFC049E41BF5"); +// printRetWrap(retWrap); +// } +// +// // 测试通过 +// // MG +// @Test +// public void testTransTAKFromLMKToZMK() { +// RetWrap retWrap = api.transTAKFromLMKToZMK("X94D35D86EF1F3213D55C47822F87D385", "X36CC70E4274AA879AD9AE5596124DFA7"); +// printRetWrap(retWrap); +// } +// +// // 测试通过 +// // AG +// @Test +// public void testTransTAKFromLMKToTMK() { +// RetWrap retWrap = api.transTAKFromLMKToTMK("X94D35D86EF1F3213D55C47822F87D385", "X36CC70E4274AA879AD9AE5596124DFA7"); +// printRetWrap(retWrap); +// } +// +// // 测试通过 +// // JA +// @Test +// public void testGenPIN() { +// String s = api.genPIN("157212737811"); +// System.out.println(s); +// } +// +// // 00713030303030303030 +// // 4343 +// // 583034303438393445374238444531323942344646344546393838394535364132 +// // 583934443335443836454631463332313344353543343738323246383744333835 +// // 50 +// // 31 +// // 31 +// // 3132 +// // 33373532373544313235363334384341 +// // 3031 +// // 3031 +// // 313537323132373337383131 +// +// // 测试通过 +// // CC +// @Test +// public void testTransPINFromZPKToZPK() { +// String s = api.transPINFromZPKToZPK("X0404894E7B8DE129B4FF4EF9889E56A2", "X94D35D86EF1F3213D55C47822F87D385", 1, 1, 1, 1, "375275D1256348CA", "157212737811"); +// System.out.println(s); +// } +// +// // 测试通过 +// // JE +// @Test +// public void testTransPINFromZPKToLMK() { +// String str = api.transPINFromZPKToLMK("X0404894E7B8DE129B4FF4EF9889E56A2", 1, 1, 01, "375275D1256348CA", "157212737811"); +// System.out.println(str); +// } +// +// // 测试通过 +// // JG +// @Test +// public void testTransPINFromLMKToZPK() { +// String s = api.transPINFromLMKToZPK("958FA085C014833A", 1, 1, 01, "54367430851C073B", "157212737811"); +// System.out.println(s); +// } +// +// // 测试通过 +// // CA +// @Test +// public void testTransPINFromTPKToZPK() { +// String s = api.transPINFromTPKToZPK("189A8A973A9FF7CF", "F4663B51F823CFDC", 1, 1, 1, 1, "5162F23A8354424E", "157212737811"); +// System.out.println(s); +// } +// +// // 测试通过 +// // JC +// @Test +// public void testTransPINFromTPKToLMK() { +// String zpk = "189A8A973A9FF7CF"; +// String pin = "5162F23A8354424E"; +// String s = api.transPINFromTPKToLMK(zpk, 1, 1, 1, pin, account); +// System.out.println(s); +// } +// +// // 测试通过 +// // BA +// @Test +// public void testEncryPIN() { +// String pin = "06157212FFFFFFFF"; +// String s = api.encryPIN(0, pin, account); +// System.out.println(s); +// } +// +// // 测试通过 +// // NG +// @Test +// public void testDecryPIN() { +// String pin = "EB53196BFAD34C39"; +// String s = api.decryPIN(0, pin, account); +// System.out.println(s); +// } +// +// +// // 006E00000000000000004342303030303030584B303030303030303030303030303030313030303030303030303031584B30303030303030303030303030303032303030303030303030303250313131313239384430324231433742433945303130313135373231323733373831314E +// +// // 没有该指令 +// // CB +// @Test +// public void testTransPinFrOneKeyToAno() { +// String srcKey = "XK000000000000000100000000001"; +// String desKey = "XK000000000000000200000000002"; +// String sPin = "11298D02B1C7BC9E"; +// String s = api.transPinFrOneKeyToAno("000", "000", srcKey, desKey, 1, 1, sPin, account); +// System.out.println(s); +// } +// +// // 003B3030303030303030 +// // 4D41 +// // 583430423631363946363334393530363034304236313639463633343935303630 +// // 31353732313237333738313130303030 +// +// // 测试通过 +// // MAXF +// @Test +// public void testMAC_Data() { +// String key = "X40B6169F6349506040B6169F63495060"; +// String macData = "1572127378110000"; +// byte[] bytes = api.MAC_Data( key, macData, null); +// +// System.out.println(new String(bytes)); +// } +// +// // 00000000 +// // MA +// // P +// // 1 +// // 0 +// // 0 +// // 1 +// // XK122222222222222200312222222 +// // 11110000 +// +// // 00300000000000000000 +// // 4D41 +// // 50 +// // 31 +// // 30 +// // 30 +// // 31 +// // 584B313232323232323232323232323232323030333132323232323232 +// // 31313131 +// +// // 测试通过 +// // MA +// @Test +// public void testMACCalc() { +// +// String s = api.MACCalc(1, 0, "XK122222222222222200312222222", 0, "1111".getBytes(), 1); +// System.out.println(s); +// } +// +// // 003C0000000000000000 +// // 4D43 +// // 50 +// // 31 +// // 30 +// // 30 +// // 32 +// // 584B313232323232323232323232323232323030333132323232323232 +// // 3131313131313131 +// // 3131313131313131 +// +// // 00383030303030303030 +// // 4D43 +// // 50 +// // 31 +// // 30 +// // 30 +// // 31 +// // 584B313232323232323232323232323232323030333132323232323232 +// // 31313131 +// // 3131313131313131 +// +// // MC +// @Test +// public void testMACCheck() { +// String AK = "XK122222222222222200312222222"; +// +// String s = api.MACCalc(1, 0, AK, 0, "1111".getBytes(), 1); +// +// api.MACCheck(1, 0, AK, 0, "1111".getBytes(), s); +// } +// +// String key = "X40B6169F6349506040B6169F63495060"; +// String msg = "AAAAAAAAAAAAAAAABBBBBBBBBBBBBBBB"; +// +// // 测试通过 +// // MS +// @Test +// public void testGenMAB() { +// RetWrap retWrap = api.genMAB(1, 0, 1, key, null, msg.getBytes()); +// printRetWrap(retWrap); +// } +// +// // 测试通过 +// // MU +// @Test +// public void test_calcPBOCMAC() { +// byte[] bytes = api._calcPBOCMAC(1, 0, key, msg.getBytes(), 1, null); +// System.out.println(new String(bytes)); +// } +// +// // 测试通过 +// // E0 +// @Test +// public void testSYMEnDeData() { +// String seesionKey = "XFD92E1D7C45FA56EAD2F4FC1E7898465"; +// String pInData = "1111111111111111"; +// String IV = "1111111111111111"; +// +// RetWrap retWrap = api.SYMEnDeData(true, 0, seesionKey, 2, 0, pInData.getBytes(), IV.getBytes(), 0); +// printRetWrap(retWrap, true); +// } +// +// // 00650000000000000000 +// // 4530 +// // 30 +// // 38 +// // 3230583643454537343433323934393942343236434545373434333239343939423432303031303030303230303030303030303030303030303030303030303030303030303030303030303030423131313131313131313131 +// +// // 测试通过 +// // E0 +// @Test +// public void testSM4EncryptDataCBC() { +// String key = "X6CEE744329499B426CEE744329499B42"; +// String msg = "1111111111111111111111"; +// byte[] bytes = api.SM4EncryptDataCBC(0, key, 0, 0 , msg.getBytes()); +// printByteArray(bytes); +// +// } +// +// // 00200000000000000000 +// // 4531 +// // 303030 +// // 303130 +// // FF045D9DFA5DBE95CBC4285499719EF1 +// +// // 006A000000000000000245303039323058364345453734343332393439394234323643454537343433323934393942343230303130303030323030303030303030303030303030303030303030303030303030303030303030303130FF045D9DFA5DBE95CBC4285499719EF1 +// // 测试通过 +// // E0 +// @Test +// public void testSM4DecryptDataCBC() { +// String key = "X6CEE744329499B426CEE744329499B42"; +// String msg = "11111111111"; +// byte[] bytes = api.SM4EncryptDataCBC(0, key, 0, 0 , msg.getBytes()); +// System.out.println("输出为: " + Util.bytes2HexString(bytes)); +// +// byte[] bytes1 = api.SM4DecryptDataCBC(0, key, 0, 0, bytes); +// +// printByteArray(bytes1, false); +// } +// +// // 00850000000000000000 +// // 4530 +// // 30 +// // 38 +// // 32 +// // 30 +// // 583643454537343433323934393942343236434545373434333239343939423432 +// // 30 +// // 30 +// // 31 +// // 30303030 +// // 32 +// // 3030303030303030303030303030303030303030303030303030303030303030 +// // 303242 +// // 31303130313131313131313131313131313131313131313030303030303030303031313131313131313131 +// +// // 测试通过 +// // E0 +// @Test +// public void testSM4EncryptFileDataCBC() { +// String key = "X6CEE744329499B426CEE744329499B42"; +// String inFilePath = "C:\\Users\\edgar\\Desktop\\fsdownload\\test\\in.txt"; +// String outFilePath = "C:\\Users\\edgar\\Desktop\\fsdownload\\test\\in2.txt"; +// boolean b = api.SM4EncryptFileDataCBC(0, key, 0, 0, inFilePath, outFilePath); +// System.out.println(b); +// } +// +// +// // 测试通过 +// // E0 +// @Test +// public void testSM4DecryptFileDataCBC() throws UnsupportedEncodingException { +// String key = "X6CEE744329499B426CEE744329499B42"; +// String outFilePath = "C:\\Users\\edgar\\Desktop\\fsdownload\\test\\in2.txt"; +// String outFilePath2 = "C:\\Users\\edgar\\Desktop\\fsdownload\\test\\out1.txt"; +// boolean b = api.SM4DecryptFileDataCBC(0, key, 0, 0, outFilePath, outFilePath2); +// System.out.println(b); +// } +// +// // 测试通过 +// // E0 +// @Test +// public void testEncDecData() { +// +// String msg = "1111111111111111111111"; +// +// /** +// * 对称密钥产生 +// * @param keyType 密钥类型 +// * @param solution 密钥方案(LMK) 密钥长度/LMK下加密密钥的方案。 +// * @return RetWrap 包含 +// * lmkKey LMK LMK加密密钥 +// * keyCheck 密钥校验值 +// * +// */ +// RetWrap retWrap = api.genSymmetricKey("000", 'S'); +// +// byte[] lmkKey = (byte[]) retWrap.get("lmkKey"); +// +// String key = new String(lmkKey); +// +// System.out.println("对称密钥:" + key); +// +// /** +// * 用输入的会话密钥,对指定报文数据进行加密处理。 +// * +// * @param nAlg  算法标识.,0x00:3DES,0x01:SM4。 +// * @param seesionKey  本地LMK 加密的会话密钥,HEX 格式 +// * @param pINdata  要加密的报文明文。必须是 8 或16 的倍数。 +// * @return 输出的报文密文, 长度为报文明文 + 16 +// */ +// byte[] bytes = api.SYMEncryptDataCBC(1, key, msg.getBytes()); +// +// System.out.println("输出为: " + com.sunyard.proto.Util.bytes2HexString(bytes)); +// +// /** +// * 用输入的会话密钥,对指定报文数据进行解密处理。 +// * +// * @param nAlg  算法标识.,0x00:3DES,0x01:SM4。 +// * @param seesionKey 本地LMK 加密的会话密钥,HEX 格式 +// * @param pINdata 要解密的报文密文。长度必须是8 或16 的倍数。 +// * @return 输出的报文明文。 +// */ +// byte[] bytes1 = api.SYMDecryptDataCBC(1, key, bytes); +// System.out.println("明文:" + new String(bytes1)); +// } +// +// // 测试通过 +// // E0 +// @Test +// public void testEncDecData1() { +// +// // 000000000000011100000000001 +// String key = "XK000000000000011100000000001"; +// +// String msg = "111111111111111111qewehtrhq1"; +// +// byte[] bytes = api.SYMEncryptDataCBC(1, key, msg.getBytes()); +// +// System.out.println("输出为: " + Util.bytes2HexString(bytes)); +// +// byte[] bytes1 = api.SYMDecryptDataCBC(1, key, bytes); +// System.out.println("明文:" + new String(bytes1)); +// } +// +// // 测试通过 +// // E0 +// @Test +// public void testEncDecData2() { +// +// String userId = "0000000000000111"; +// String index = "00000001"; +// +// String msg = "1011111111111111101"; +// +// byte[] bytes = api.SYMSM4EncDataByIndex(0, userId, index, msg.getBytes()); +// +// System.out.println("输出为: " + Util.bytes2HexString(bytes)); +// +// byte[] bytes1 = api.SYMSM4DecDataByIndex(0, userId, index, bytes); +// System.out.println("明文:" + new String(bytes1)); +// } +// +// @Test +// public void testaaa() throws UnsupportedEncodingException { +// String key = "X6CEE744329499B426CEE744329499B42"; +// String inFilePath = "C:\\Users\\edgar\\Desktop\\fsdownload\\test\\in1.txt"; +// String outFilePath = "C:\\Users\\edgar\\Desktop\\fsdownload\\test\\in2.txt"; +// String outFilePath2 = "C:\\Users\\edgar\\Desktop\\fsdownload\\test\\out1.txt"; +// +// boolean b = api.SM4EncryptFileDataCBC(0, key, 0, 0, inFilePath, outFilePath); +// System.out.println(b); +// boolean c = api.SM4DecryptFileDataCBC(0, key, 0, 0, outFilePath, outFilePath2); +// System.out.println(c); +// } +// +// // 测试通过 +// // Y0 +// @Test +// public void testSwitchEncryY() { +// String sDEK = "X40B6169F6349506040B6169F63495060"; +// String dDEK = "X94D35D86EF1F3213D55C47822F87D385"; +// String infoData = "93B0FB7F609A16E0C2D6BD0AC4AE0297"; +// +// byte[] bytes = api.switchEncryY("000", 2, "001", 2, 1, sDEK, dDEK, infoData.getBytes(), "0"); +// System.out.println(new String(bytes)); +// } +// +// // 测试通过 +// // LB +// @Test +// public void testLoadKey() { +// String index = "000000000000000300000000004"; +// String key = "X94D35D86EF1F3213D55C47822F87D385"; +// Boolean check = api.loadKey(index, key, null); +// System.out.println(check); +// } +// +// // 从用户存储区获取对称密钥 +// // 测试通过 +// // LF +// @Test +// public void testReadKey() { +// String index = "000000000000000100022222222"; +// RetWrap retWrap = api.readKey(index); +// printRetWrap(retWrap); +// +// System.out.println("aaaaaaaa: " + new String((byte[]) retWrap.get("key"))); +// } +// +// // 测试通过 +// // LG +// @Test +// public void testUpdateKey() { +// String index = "000000000000000300000000003"; +// String key = "X94D35D86EF1F3213D55C47822F87D385"; +// Boolean aBoolean = api.updateKey(index, key, "0000000000000000"); +// System.out.println(aBoolean); +// } +// +// // 00A30000000000000000 +// // 3737 +// // 31 +// // 30313238 +// // 5E1A8F50696C737AFCA0D2F7093E90D3913204013C4A85072AA8D3CDBE1782860000000000000000000000000000000000000000000000000000000000000000C729A69AA23CA0736E5C223487DF211D51BAFFDCF06914CE2E855EF6DE0F42AB0000000000000000000000000000000000000000000000000000000000000000 +// // 30303136 +// // 46464646464646464646464646464646 +// +// // 测试通过 +// // 77 +// @Test +// public void testEncryptByPk() { +// String pk = "034200042E2980FEDC9DAB03EEE490D9382CA04F018D905EF7319152ADF6A47EF2E3675204B015B7D16AB015AC8C2F24D2E63F69B867E16BA47B0138A86D4461DAE568A6"; +// String data = "FFFFFFFFFFFFFFFF"; +// +// byte[] bytes = api.encryptByPk(1, pk, data.getBytes()); +// System.out.println(Util.bytes2HexString(bytes)); +// } +// +// // 测试通过 +// // 78 +// @Test +// public void testDecryptBySkC() { +// // userId +// String userId = "7777777777777779"; +// String pk = "034200042E2980FEDC9DAB03EEE490D9382CA04F018D905EF7319152ADF6A47EF2E3675204B015B7D16AB015AC8C2F24D2E63F69B867E16BA47B0138A86D4461DAE568A6"; +// String data = "FFFFFFFFFFFFFFFF"; +// +// byte[] bytes = api.encryptByPk(1, pk, data.getBytes()); +// String encryptData = Util.bytes2HexString(bytes); +// System.out.println("加密后的数据: " + encryptData); +// +// byte[] originalData = api.decryptBySkC(1, userId, Util.hexString2Bytes(encryptData)); +// System.out.println("解密后的数据: " + Util.bytes2HexString(originalData)); +// } +// +// // 79 +// @Test +// public void testEncryptBySk() { +// String rsaKey = "000400001661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019415964EDC1D617DCEA0E332EC9AF01165091AE6599AD06F6E24CD73CEA2FDA0D6A2CCF6805EBF5C9523D2C2D4670F920B166489B2B752903BA739219FE9FD7A4ABA0AFA3D19C4E0C2957DA3999B1772C562C5CFDDB2DD545A786E3FF7F7376DA978234CA5A51A1C5EE8CFA1B3460356E8F8808799E5DC39646FEEEF2AC2CE38D281661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E0194157BA816DB8823AAF1661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E01941971D31BFA90FCBF88452F15691C90A6EF4BC3B39496C7B1BF6C0BFEFFFCACEE3E8D5E177AB8C77A7BB04430E6540650887251CCC5B5B94D0509161F46A13B8E2D5D3971BBA180007441CB72FCB0F12317ADFD52BE098931AAB5ECA412D7DCFCE707D51A95B6E5F5826A9637D947CB4E9A5544C4622099D427CC2F1C81C9166B61661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019415AFF74E24873502CBBE817497587F920D6DBB6AFAA3617ABC1003EF00C86BF4758C5997FD61408ED619FF7ADAA281D4AAEA98848D074F820CAD0CE68A86597231661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E01941724AD53411CB6FD50BF14981C35E8FFB53EB2D3993060C67D720924F5FA2DAFFE2222D94E8BD98FC5FC0BCD3D7F58E8268C3E1E88C7EFEE66E490C9BC744B3C91661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E01941B33F7E511B17707CC89F17D463C4B24E7344BD742C137E6FFBAC1080C28C6656F07DC88DECDAE7C984587E82E668BC54921BC78264BB06CF54E4D5BE75C019271661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E01941456204A062F7A9B68ECC8ACCB5234FD5DE4BCA71D1531251BAA67B1DAB49A0F7FDD0ED8DB217A3C5A753AD14868D912600C44DDE8879A22D6B7408C9E190169E1661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E019411661745F18E0194123DD650FD6D8E766A5CDEE9D67715906A9591ACAA8FEFCA401494F18F79EAA439FB54C628493FEF624D71624C0CB17AA5E92B0EB97B1A26EF34C6809EC58D64A"; +// String sm2Key = "0001000039003BABAA8C984A527E804591119F982BCDAB1F88BBA922D3B158BC23102DF10000000000000000000000000000000000000000000000000000000000000000"; +// String data = "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"; +// +// api.encryptBySk(0, rsaKey, data.getBytes()); +// } +// +// // 测试通过 +// // 7B +// @Test +// public void testRSASignC() { +// String userId = "1111111111111114"; +// String data = "11111111"; +// byte[] bytes = api.RSASignC(userId, 0, 1, data.getBytes()); +// System.out.println(Util.bytes2HexString(bytes)); +// } +// +// // 测试通过 +// // 7C +// @Test +// public void testRSAVerify() { +// String thisPublicKey = "308189028181009666F70AA6B013099E68A0EF5EE3504A2210287459D8DD5C3851D2E5FAB821DE379C743F9EA2747A5BD441AB6FEB297ABD0DC66AD116FA918493D85E0BB05CCD2C5089BD1D5963F0FBB85EE869D18BE32EEFF5776350127B64A9C58119F6A52A9718CD3E6E6F97454826B7A7707DEBF9B2E5AD8A6FC1965F2747682FF2FA24A10203010001"; +// String data = "11111111"; +// String userId = "1111111111111114"; +// +// byte[] bytes = api.RSASignC(userId, 0, 1, data.getBytes()); +// String sign = Util.bytes2HexString(bytes); +// System.out.println(sign); +// +// boolean b = api.RSAVerify(0, 1, Util.hexString2Bytes(thisPublicKey), data.getBytes(), Util.hexString2Bytes(sign)); +// System.out.println(b); +// } +// +// // 测试通过 +// // 7D +// @Test +// public void testConutHash() { +// String data = "0101010101010101"; +//// RetWrap retWrap = api.conutHash(1, 0, data.getBytes(), null); +// +// String filterData = "67 E6 09 6A 85 AE 67 BB 72 F3 6E 3C 3A F5 4F A5 7F 52 0E 51 8C 68 05 9B AB D9 83 1F 19 CD E0 5B 80 00 00 00 00 00 00 00 30 31 30 31 30 31 30 31 30 31 30 31 30 31 30 31 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 10 00 00 00 20 00 00 00"; +// RetWrap retWrap = api.conutHash(1, 3, data.getBytes(), Util.hexString2Bytes(changeStr(filterData))); +// +// System.out.println("hash:" + Util.bytes2HexString((byte[]) retWrap.get("hash"))); +// } +// +// // 测试通过 +// // 7E +// @Test +// public void testGetDNPublicKey() { +// String dn = "C=CN,O=Sunyard,OU=8001,CN=8001"; +// String s = api.GetDNPublicKey(0, dn.getBytes()); +// System.out.println(s); +// } +// +// // 测试通过 +// // 7E +// @Test +// public void testSYD_SM2_Get_Dn_PublicKey_HA() { +// String dn = "C=CN,O=Sunyard,OU=8001,CN=8001"; +// String s = api.SYD_SM2_Get_Dn_PublicKey_HA(dn.getBytes(), 0); +// System.out.println(s); +// } +// +// // 测试通过 +// // 80 +// @Test +// public void testSM2SignCustomized() { +// String sn = "1004282452"; +// String s = api.SM2SignCustomized(sn, "111".getBytes()); +// System.out.println(s); +// } +// +// // 测试通过 +// // 81 +// @Test +// public void testSM2VerifyCustomized() { +// String sn = "1004282451"; +// String data = "111"; +// String s = api.SM2SignCustomized(sn, data.getBytes()); +// +// boolean b = api.SM2VerifyCustomized(sn, data.getBytes(), s); +// System.out.println(b); +// } +// +// // 测试通过 +// // E2 +// @Test +// public void testSM2GenKeyPair() { +// RetWrap retWrap = api.SM2GenKeyPair(); +// printRetWrap(retWrap, true); +// } +// +// // 测试通过 +// // E2 +// @Test +// public void testSM2OrRSAGenKeyPair() { +// // 000 +//// String index = "1111111111111147"; +//// // 0342000422C4FC907E0BEC600C2070D675EFB65EAE3A628260FF5461DD5F8133CF7CF98530EF392D016B6487BA6148E9AC27BDD4E8D7404A310CB09335F50AEF00ADB068 +// +// // 001 +//// String index = "1111111111111148"; +// // 0342000450420312F4ABAD98AA8EFC1F8F8204BD9E2F752C59C25A4025E675EDA5FB2337A449E00241EFA4A2F76A6C58D9834D6F0AB1164652E9C588E0EBD539C8ECB9EF +// +// // 1111111111111151 000 00000001 +// String index = "1111111111111151"; +// // 03420004E5888368B9D5BC319FE48AB92123857E696EFB1A7E08D75DD5C3C5A5E9FA18099EFFCAFD61A0838527D36C7FA6AE8E2649FB89883FC44A494830CE642A03DC24 +// // 000100009FBA90C22E18982D60022C683219F72DAAA1B878A094181381486FC5137B1B160000000000000000000000000000000000000000000000000000000000000000 +// +// // SM2 +// RetWrap retWrap = api.SM2OrRSAGenKeyPair(1, index, 0); +// +// // RSA +//// RetWrap retWrap = api.SM2OrRSAGenKeyPair(0, index, 1024); +// printRetWrap(retWrap, true); +// } +// +// // E4 +// @Test +// public void testGenKeyPair() { +// RetWrap retWrap = api.genKeyPair(415, 0002); +// printRetWrap(retWrap); +// } +// +// // 测试通过 +// // 72 +// @Test +// public void testSM2GenSessionKey() { +// +// String pk = "03 42 00 04 1C D4 73 54 86 7E 12 B9 D1 38 F0 98 41 3C 47 D4 2E DE B2 AD 40 2E AB 43 1C 0C 7A C2 FE 2D 6D E9 C6 72 73 C6 43 C7 09 F2 A7 49 18 89 41 B7 FA 7F 9F F1 4F 8E 7D 19 31 69 36 DB 4D 49 54 FF 38 19 "; +// +// RetWrap retWrap = api.SM2GenSessionKey(changeStr(pk)); +// printRetWrap(retWrap); +// } +// +// // 测试通过 +// // 73 +// @Test +// public void testSM2ConfirmSessionKeyC() { +// +// String userId = "1111111111111151"; +// +// String pk="03420004E8582C0EF495E96D4FE20C8344097750546BD3EF3BE0E1931EF21D3977FBBC774264BA5D124EB9C72177556229B5FE289B2C15B3CD3BCA9F34C663A3B8EB851E"; +// +// RetWrap retWrap = api.SM2GenSessionKey(pk); +// printRetWrap(retWrap); +// +// String cipherKey = (String) retWrap.get("CipherKey"); +// +// RetWrap retWrap1 = api.SM2ConfirmSessionKeyC(userId, cipherKey); +// printRetWrap(retWrap1); +// } +// +// // 测试通过 +// // 73 +// @Test +// public void testSM2ConfirmSessionKey() { +// +// String pk="03420004AAFCB1EACA86272281A20FE1957EEB543AB97571048D5B6350C4227980D0F109A7D5797EC97D6D874D003C4AE7C5FBFFD755413264D85DA5B0AC61B6C661CA32"; +// String sk="00010000A910C2C44646A5A43338F0F505A06AA91442BFD245082C7774F6C75247F2196F0000000000000000000000000000000000000000000000000000000000000000"; +// RetWrap retWrap = api.SM2GenSessionKey(pk); +// printRetWrap(retWrap); +// +// String cipherKey = (String) retWrap.get("CipherKey"); +// +// RetWrap retWrap1 = api.SM2ConfirmSessionKey(sk, cipherKey); +// printRetWrap(retWrap1); +// } +// +// // 75 +// @Test +// public void testSYD_SM2_Verify_HA() { +// String orgData = "11111111111111"; +// String pk="034200044BDBCE365B5DB87799EBBB78D871BEEA70A6B3BAAA2973FEDC4BF067F8F1D2A977D2BFA01562E9554F600FBBFCD0D04F50603FB225ABBEDE0DF346E5E4882F68"; +// String sk="00010000B3A7643171ABFC00D30307025B2CC5826F20210F5112F5D4BE7A8E32C82067C00000000000000000000000000000000000000000000000000000000000000000"; +// +// byte[] oData = api.SM3Hash(pk, Util.hexString2Bytes(orgData)); +// String s = api.SYD_SM2_Sign_HA(SydApi.DATA_HASH, Util.hexString2Bytes(sk), Util.hexString2Bytes(pk), oData); +// +// System.out.println("sign:" + s); +// System.out.println("decBase64:" + Util.bytes2HexString(Util.decodeBase64(s))); +// System.out.println("decBase64-1:" + Util.bytes2HexString(SYMUtil.base64SignAsDerSign(s))); +// boolean b = api.SYD_SM2_Verify_HA(SydApi.DATA_HASH, Util.hexString2Bytes(pk), Util.hexString2Bytes(orgData), s); +// System.out.println("验签结果: " + b); +// } +// +// // 测试通过 +// // 76 +// @Test +// public void testSM3Hash() { +// +// String userId = "1572127378000000"; +// String publicKey = "03 42 00 04 1C D4 73 54 86 7E 12 B9 D1 38 F0 98 41 3C 47 D4 2E DE B2 AD 40 2E AB 43 1C 0C 7A C2 FE 2D 6D E9 C6 72 73 C6 43 C7 09 F2 A7 49 18 89 41 B7 FA 7F 9F F1 4F 8E 7D 19 31 69 36 DB 4D 49 54 FF 38 19"; +// String msg = "0101010101010101"; +// +// RetWrap retWrap = api.SM3Hash(1, userId, Util.hexString2Bytes(changeStr(publicKey)), msg.getBytes(), null); +// printRetWrap(retWrap, true); +// } +// +// // 测试通过 +// // 76 +// @Test +// public void testSM3Hash2() { +// String publicKey = "0342000469DE3847DD6A66DA96DB8F2DCFA32E10E680FF2EF4A592079E7C3A44320BB15084E7CA9782A39B6E28F07C04FE00D68958A2605921E71712D56C1E4435A39FA5"; +// String orgData = "FFFFFFFFFFFFFFFF"; +// +// byte[] hash = api.SM3Hash(publicKey, orgData.getBytes()); +// +// System.out.println("hash:" + Util.bytes2HexString(hash)); +// } +// +// // 测试通过 +// // 76 +// @Test +// public void testSM3Hash3() { +// String orgData = "FFFFFFFFFFFFFFFF"; +// +// byte[] hash = api.SM3Hash(orgData.getBytes()); +// +// System.out.println("hash:" + Util.bytes2HexString(hash)); +// } +// +// // 测试通过 +// // 71 +// @Test +// public void testLMK2SM2() { +// +// String pk = "03 42 00 04 1C D4 73 54 86 7E 12 B9 D1 38 F0 98 41 3C 47 D4 2E DE B2 AD 40 2E AB 43 1C 0C 7A C2 FE 2D 6D E9 C6 72 73 C6 43 C7 09 F2 A7 49 18 89 41 B7 FA 7F 9F F1 4F 8E 7D 19 31 69 36 DB 4D 49 54 FF 38 19 "; +// String key = "U5FAC0E768937E43D64FE2692F5F8C79F"; +// +// RetWrap retWrap = api.LMK2SM2(Util.hexString2Bytes(changeStr(pk)), key); +// printRetWrap(retWrap, true); +// } +// +// // 测试通过 +// // 60 +// @Test +// public void testGetTransmissionKey() { +// RetWrap retWrap = api.getTransmissionKey(); +// printRetWrap(retWrap); +// } +// +// // 61 +// @Test +// public void testRoleVerify() { +//// api.roleVerify() +// } +// +// // 68 +// @Test +// public void testDecryptAndEncryptByP() { +// +// String data = "FFFFFFFFFFFFFFFF"; +// +// String publicKey = "03420004549B6A1A09A5D0D9432C6829D443F85ED8785340FC1AB14118BB7637830C808F7A888DF0C4F988EA6FF2EE6C76ECD00C4B7CEC92CC8EA365F8EA291041CAB231"; +// +// byte[] bytes = api.SYMEncryptData(3,"XF356BCBA3204F6E6F356BCBA3204F6E6", 1, data.getBytes()); +// String enData = Util.bytes2HexString(bytes); +// System.out.println("加密:" + enData); +// +// RetWrap retWrap = api.decryptAndEncryptByP("XF356BCBA3204F6E6F356BCBA3204F6E6", bytes, 1, Util.hexString2Bytes(publicKey)); +// printRetWrap(retWrap); +// } +// +// // 69 +// @Test +// public void testDecryptAndEncryptByS() { +// +// } +// +// // 测试通过 +// // Y8 +// @Test +// public void testGenerateRandom() { +// String s = api.GenerateRandom(16); +// System.out.println(s); +// } +// +// // 测试通过 +// // AB +// @Test +// public void testGetPlainText() { +// String key = "U51B737CE0EE1A14A6411B64EDE56020B"; +// +// RetWrap r = api.getPlainText(key, 0); +// printRetWrap(r); +// } +// +// // 测试通过 +// // 62 +// @Test +// public void testImpose() { +// +// String key = "U51B737CE0EE1A14A6411B64EDE56020B"; +// String msg = "0101010101010101"; +// +// RetWrap retWrap = api.impose("002", key, msg.getBytes()); +// printRetWrap(retWrap); +// } +// +// // 测试通过 +// // 63 +// @Test +// public void testVerifyImpose() { +// +// String key = "U51B737CE0EE1A14A6411B64EDE56020B"; +// +// String secret = "3DCA1AD1"; +// +// String msg = "0101010101010101"; +// +// Boolean aBoolean = api.verifyImpose("002", key, secret.getBytes(), msg.getBytes()); +// System.out.println(aBoolean); +// } +// +// // 测试通过 +// // 64 +// @Test +// public void testEncryAndDecry() { +// String key = "U51B737CE0EE1A14A6411B64EDE56020B"; +// String infoData = "01010101"; +// +// RetWrap retWrap = api.encryAndDecry("002", key, infoData.getBytes()); +// printRetWrap(retWrap, true); +// } +// +// // 测试通过 +// // 65 +// @Test +// public void testSwitchEncry() { +// String srcKey = "U51B737CE0EE1A14A6411B64EDE56020B"; +// String aimKey = "X94D35D86EF1F3213D55C47822F87D385"; +// String infoData = "88888888"; +// +// RetWrap retWrap = api.switchEncry("002", srcKey, aimKey, infoData.getBytes()); +// printRetWrap(retWrap, true); +// } +// +// // 测试通过 +// // 66 +// @Test +// public void testEncryAndDecry4PIN() { +// String key = "U51B737CE0EE1A14A6411B64EDE56020B"; +// String pin = "06156760"; +// +// byte[] bytes = api.encryAndDecry4PIN(key, pin.getBytes()); +// +// System.out.println(Util.bytes2HexString(bytes)); +// } +// +// // 测试通过 +// // 67 +// @Test +// public void testswitchEncry4PIN() { +// String srcKey = "XK111111111111111200100000001"; +// String aimKey = "XK111111111111111300100000001"; +// String infoData = "61572122"; +// +// byte[] bytes = api.switchEncry4PIN(srcKey, aimKey, infoData.getBytes()); +// System.out.println(Util.bytes2HexString(bytes)); +// } +// +// // 测试通过 +// // 6A +// @Test +// public void testGenerateDE() { +// String dn = "1004282452"; +// +// RetWrap retWrap = api.generateDE(dn, (byte) 0x30); +// printRetWrap(retWrap); +// } +// +// // 001B3030303030303030 +// // 3641 +// // 30 +// // 30 +// // 30303130 +// // 31303034323832343532 +// // 58 +// +// // 测试通过 +// // 6A +// @Test +// public void testGenerateDEByDn() { +// String dn = "1004282452"; +// +// RetWrap retWrap = api.generateDEByDn(dn.getBytes(), 0, 0); +// printRetWrap(retWrap); +// } +// +// // 01210000000000000000 +// // 3642 +// // 3030 +// // 30313932 +// // 4D49474D416945417058426D4C43545A4D54543247454A677A576658634555645770376D64466E5A5A344F4972556E326E5145434948766C2F674534707448476D4748737739464844566D3357334F6E636B764D71325044766C38374657667742434250347175466B346243715A48735177585258614E712B576E6C664234634C6859762F59766D6777496F7541516A56685551545578666C50464C783357734D56703362426A6658567539426278796F6A2B6D4937686D774A665178416B3D +// // 4C4246373430343745463846384343353532463039313838363233373639343241424637343034374546384638434335353246303931383836323337363934324132303034443039344339433336334445 +// +// // 00DE0000000000000001 +// // 3642 +// // 3030 +// // 30 +// // 31 +// // 3031303034323832343532 +// // 30313932 +// // 4D49474D4169454167746A6D2F3364654C44754D5A6A5446454C44564D7A6A77336F4A527354772F4E37594A54536151517A63434944524A30317053787A346D7864364464504848337639726E617075564B4B6668664E6557576E4530324F354243414748696241702F2F64373538574D77574E78356A6E4B3458564E536F4D4C724A3271757056734747707677516A6F357969655A5A76624368354B6B4662494942642F426A3133436631504C556C5952614D4F416442633973744A35413D58 +// +// // 测试通过 +// // 6B +// @Test +// public void testDecryptDE() { +// String sn = "1004282452"; +// RetWrap retWrap = api.generateDEByDn(sn.getBytes(), 0, 0); +// String sessionKey = (String) retWrap.get("SessionKey"); +// String CipherKey = (String) retWrap.get("CipherKey"); +// String KCV = (String) retWrap.get("KCV"); +// printRetWrap(retWrap); +// +// RetWrap retWrap1 = api.decryptDE(sn, CipherKey); +// sessionKey = (String) retWrap1.get("SessionKey"); +// printRetWrap(retWrap1); +// } +// +// // 测试通过 +// // 6B +// @Test +// public void testDecryptDE2() { +// String sn = "1004282452"; +//// String sn = "1FD9F2049860FD072F0CC71B072EBF9952E2784E"; +// RetWrap retWrap = api.generateDE(sn, SydApi.ALG_SM4); +// String CipherKey = (String) retWrap.get("CipherKey"); +// printRetWrap(retWrap); +// +// System.out.println("解base64: " + Util.bytes2HexString(Base64.getDecoder().decode(CipherKey))); +// +// RetWrap retWrap1 = api.decryptDE(sn, CipherKey); +// printRetWrap(retWrap1); +// } +// +// +// @Test +// public void testDecryptDE3() { +// String sn = "1004282452"; +// +// +// /** +// * 产生对称密钥,通过公钥加密生成网联格式的数字信封。 +// * @param certSerial 对*方 X509 证书的序列号。 +// * @param nAlg 算法标识,0:AES,1:SM4 +// * @return RetWrap 包含 CipherKey, SessionKey, KCV +// * CipherKey 公钥加密的会话密钥 ,BASE64 编码 +// * SessionKey 本地LMK 加密的会话密钥,HEX 格式, 本地 LMK 加密的会话密钥长度,HEX 格式(不包括第 1 个字符),一般为 33 个 Bytes。默认输入值为缓冲区的大小。 +// * KCV 会话密钥的检验值,HEX 格式,长度为 32H。 +// */ +// RetWrap retWrap = api.generateDEbyGS(sn, SydApi.ALG_SM4); +// String CipherKey = (String) retWrap.get(SydApi.RET_CIPHER_KEY); +// String sessionKey = (String) retWrap.get(SydApi.RET_SESSION_KEY); +// printRetWrap(retWrap); +// +// /** +// * 接收用私钥解密数字信封,还原对称密钥。 +// * +// * @param pCertSerial 输入。 对方 X509 证书的序列号。 +// * @param pCipherKey 输入。 公钥加密的会话密钥,BASE64 编码 +// * @return RetWrap 包含 SessionKey KCV +// * SessionKey 输出。 本地LMK 加密的会话密钥,格式为:密钥类型|密钥密文,比如:02|密钥密文 +// * KCV 会话密钥的检验值,HEX 格式,长度为 36H。 +// */ +// RetWrap retWrap1 = api.decryptDE(sn, CipherKey); +// printRetWrap(retWrap1); +// } +// +// @Test +// public void testDecryptDE4() { +// String sn = "1004282452"; +// +// RetWrap retWrap = api.generateDEbyGS(sn, "00001111222233"); +// String CipherKey = (String) retWrap.get(SydApi.RET_CIPHER_KEY); +// String sessionKey = (String) retWrap.get(SydApi.RET_SESSION_KEY); +// printRetWrap(retWrap); +// +// byte[] decode = Base64.getDecoder().decode(CipherKey); +// System.out.println("解base64: " + Util.bytes2HexString(decode)); +// +// RetWrap retWrap1 = api.decryptDE(sn, CipherKey); +// printRetWrap(retWrap1); +// } +// +// @Test +// public void testDecryptDE5() throws UnsupportedEncodingException { +// String dn = "C=CN,O=CFCA OCA1,OU=YCCA,OU=Individual-2,CN=YCCA@黄金交易所@Zhuangj@1"; +// String oData = "00001111222233"; +// +// RetWrap retWrap = api.generateDEByDn(dn, oData); +// String CipherKey = (String) retWrap.get(SydApi.RET_CIPHER_KEY); +// String sessionKey = (String) retWrap.get(SydApi.RET_SESSION_KEY); +// printRetWrap(retWrap); +// +// RetWrap retWrap1 = api.decryptDEByDN(dn, CipherKey); +// printRetWrap(retWrap1); +// } +// +// // 测试通过 +// // 6C +// @Test +// public void testNetSign() { +// String sn = "1004282451"; +// /** +// * 结果为der编码后再进行base64编码 +// */ +// String s = api.netSign(sn, "111".getBytes()); +// +// /** +// * base64解码 +// */ +// byte[] bytes = Util.decodeBase64(s); +// +// /** +// * 将der编码转为base64编码 +// */ +// String s1 = SYMUtil.derSign2Base64Sign(bytes); +// System.out.println(s1); +// +// byte[] bytes1 = Util.decodeBase64(s1); +// +// System.out.println(Util.bytes2HexString(bytes1)); +// } +// +// // 测试通过 +// // 6D +// @Test +// public void testNetVerify() { +// String sn = "1004282451"; +// String data = "111"; +// String s = api.netSign(sn, data.getBytes()); +// +// System.out.println("签名: " + s); +// +// boolean b = api.netVerify(sn, data.getBytes(), s); +// System.out.println(b); +// } +// +// // 测试通过 +// // 6D +// @Test +// public void testNetGSSign() { +// String sn = "1004282451"; +// String data = "1111111111111111111111111111"; +// +// /** +// * 用指定的证书私钥对指定的数据进行数字签名。 +// * 最大签名原始数据为8161byte +// * @param pCertSerial 输入。签名 X509 证书的序列号。 +// * @param pOrgData 输入。 待签名的原始数据。 +// * @return 签名数据(BASE64 编码)。 +// */ +// String sign = api.netGSSign(sn, data.getBytes()); +// System.out.println("签名: " + sign); +// +// /** +// * 用指定证书对指定的原始数据进行数字签名验证。 +// * @param pCertSerial 输入。 签名 X509 证书的序列号。 +// * @param pOrgData 输入。 待签名的原始数据。 +// * @param pSignData 输入。 签名数据(BASE64 编码)。 +// * @return true 表示验证正确;false 表示失败; +// */ +// boolean b = api.netGSVerify(sn, data.getBytes(), sign); +// System.out.println(b); +// } +// +// // 测试通过 +// // 6D +// @Test +// public void testNetVerify2() { +// String sn = "1004282451"; +// String userId = "1234567812345678"; +// String data = "111"; +// String s = api.unPSign(sn, userId, data.getBytes()); +// +// boolean b = api.unPVerify(sn, userId, data.getBytes(), s); +// System.out.println(b); +// } +// +// // 测试通过 +// // 6E +// @Test +// public void testGetX509SN() { +// String dn = "C=CN,ST=ZJ,L=HZ,O=SUNYARD,OU=123456,CN=111"; +// String s = api.getX509SN(0, dn.getBytes()); +// System.out.println(s); +// } +// +// // 测试通过 +// // QQ +// @Test +// public void testRSAGetPublicKeyC() { +// String userId = "1111111111111114"; +// +// String s = api.RSAGetPublicKeyC(userId, 0); +// System.out.println(s); +// } +// +// // 测试通过 +// // QQ +// @Test +// public void testSM2GetPublicKeyC2() { +// String userId = "1111111111111117"; +// +// String s = api.SM2GetPublicKeyC(userId, 0); +// System.out.println(s); +// } +// +// // 测试通过 +// // QQ +// @Test +// public void testSM2GetPublicKeyC3() { +// +// String tag = "111111111111111800000000001"; +// String s = api.SM2GetPublicKeyC(tag); +// System.out.println(s); +// } +// +// // 测试通过 +// // QP +// @Test +// public void testSM2GetPrivateKeyC() { +// String tag = "111111111111111800000000001"; +// String s = api.SM2GetPrivateKeyC(tag); +// System.out.println(s); +// } +// +// // 测试通过 +// // HI +// @Test +// public void testGetStatus() { +// RetWrap status = api.getStatus(); +// +// printRetWrap(status); +// } +// +// // 测试通过 +// // HV +// @Test +// public void testGetVersion() { +// RetWrap version = api.getVersion(null); +// printRetWrap(version); +// } +// +// // 测试通过 +// // 8008 +// @Test +// public void testGetAllCert() throws UnsupportedEncodingException { +// RetWrap allCert = api.getAllCert(2); +// printRetWrap(allCert); +// } +// +// // 测试通过 +// // 8009 +// @Test +// public void testImportCert() throws IOException { +// // String path = "E:\\work\\sunyard\\证书\\sm2.q\\sm2.q.enc.crt.pem"; - - String pCert = "-----BEGIN CERTIFICATE-----\\r\\nMIIC0DCCAnSgAwIBAgIFEEBzAUEwDAYIKoEcz1UBg3UFADBcMQswCQYDVQQGEwJD\\r\\nTjEwMC4GA1UECgwnQ2hpbmEgRmluYW5jaWFsIENlcnRpZmljYXRpb24gQXV0aG9y\\r\\naXR5MRswGQYDVQQDDBJDRkNBIFRFU1QgU00yIE9DQTEwHhcNMjAxMTAzMDk1NTU4\\r\\nWhcNMjUxMTAzMDk1NTU4WjB1MQswCQYDVQQGEwJDTjEQMA4GA1UECgwHT0NBMVNN\\r\\nMjENMAsGA1UECwwEdGVzdDEZMBcGA1UECwwQT3JnYW5pemF0aW9uYWwtMjEqMCgG\\r\\nA1UEAwwhMDUxQGNoaW5hdW5pb25wYXlAWjkwNTI5MDAwMDAwOEAyMFkwEwYHKoZI\\r\\nzj0CAQYIKoEcz1UBgi0DQgAEkw27RvY8mAx6h7vnSW/+X3b++a1E6LzQTPWMOiKP\\r\\nAfZTqJMKeRnQNEKt+N7EA98YHVheOCT9TlZ3fkgtNZcH86OCAQYwggECMB8GA1Ud\\r\\nIwQYMBaAFGv+GNqPQjqmuG2zLoiDOjSiwTDhMAwGA1UdEwEB/wQCMAAwSAYDVR0g\\r\\nBEEwPzA9BghggRyG7yoBATAxMC8GCCsGAQUFBwIBFiNodHRwOi8vd3d3LmNmY2Eu\\r\\nY29tLmNuL3VzL3VzLTE0Lmh0bTA5BgNVHR8EMjAwMC6gLKAqhihodHRwOi8vdWNy\\r\\nbC5jZmNhLmNvbS5jbi9TTTIvY3JsMTM3MzYuY3JsMA4GA1UdDwEB/wQEAwIGwDAd\\r\\nBgNVHQ4EFgQUn9wz++O90r2Bc7qlzqeIhIVivD4wHQYDVR0lBBYwFAYIKwYBBQUH\\r\\nAwIGCCsGAQUFBwMEMAwGCCqBHM9VAYN1BQADSAAwRQIgNXTJts3vqvCbbhUKwnkI\\r\\nrv+HeDeyTwU4JJpBTWCR6TACIQCtQShpYt9jgxw6VSHpKEXnnWH9u4vYhXDoH42w\\r\\nWVaX6A==\\r\\n-----END CERTIFICATE-----"; - - String pCert1 = "MIID3QYKKoEcz1UGAQQCAqCCA80wggPJAgEBMQ4wDAYIKoEcz1UBgxEFADAMBgoqgRzPVQYBBAIBoIICxDCCAsAwggJjoAMCAQICEBAAAAAAAAAAAAAAEEJYBCMwDAYIKoEcz1UBg3UFADBcMQswCQYDVQQGEwJDTjEwMC4GA1" + - "UECgwnQ2hpbmEgRmluYW5jaWFsIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MRswGQYDVQQDDBJDRkNBIFRFU1QgU00yIE9DQTEwHhcNMjEwMTExMDk1MjI1WhcNMjIwMTExMDk1MjI1WjB2MQswCQYDVQQGEwJjbjEVMBMGA1UECgwMQ0ZDQSBURVNUIENBMQ8wDQYDVQQLDAZDQ0ZDQ0IxF" + - "DASBgNVBAsMC0VudGVycHJpc2VzMSkwJwYDVQQDDCAwNDFAODkwNDI5MDA5OTk5RkRAQ0JDQ0AwMDAwMDAwMTBZMBMGByqGSM49AgEGCCqBHM9VAYItA0IABExU5zuJ3pVl49mS3rTBwUcPuiI/zDR/w117PkpCgJ7m0kGyyorj1h2bxM62PthpNy99KPnk9gEvS696ZE5s8LGjgeowgecw" + - "HwYDVR0jBBgwFoAUa/4Y2o9COqa4bbMuiIM6NKLBMOEwSAYDVR0gBEEwPzA9BghggRyG7yoBATAxMC8GCCsGAQUFBwIBFiNodHRwOi8vd3d3LmNmY2EuY29tLmNuL3VzL3VzLTE0Lmh0bTA5BgNVHR8EMjAwMC6gLKAqhihodHRwOi8vdWNybC5jZmNhLmNvbS5jbi9TTTIvY3JsMTY4NzY" + - "uY3JsMAsGA1UdDwQEAwID6DAdBgNVHQ4EFgQUypxjmN7VBcoruhBRWmmFNv9yG1IwEwYDVR0lBAwwCgYIKwYBBQUHAwIwDAYIKoEcz1UBg3UFAANJADBGAiEA1IQTRQf5aaDJzzVxWLRml1ZSqQd9FPFeKZJnbzGQIQMCIQD/gY5+H1nytcVAx8hGtUPssklmI+9+vTdOF5LaKMR+jzGB3T" + - "CB2gIBATBwMFwxCzAJBgNVBAYTAkNOMTAwLgYDVQQKDCdDaGluYSBGaW5hbmNpYWwgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxGzAZBgNVBAMMEkNGQ0EgVEVTVCBTTTIgT0NBMQIQEAAAAAAAAAAAAAAQQlgEIzAMBggqgRzPVQGDEQUAMA0GCSqBHM9VAYItAQUABEYwRAIgXmjY/FIR8" + - "qudmZGsIQUivZDt3/73dGojVjj5L76OcJICIAHu0G242uYPY2B8zMkGw7kQ1C1xgRipEmlC1GWwMCz0"; - - String pCert2 = "MIIDATCCAqWgAwIBAgIUKGNCcRdvF5KJOxRb401NHRTCSogwDAYIKoEcz1UBg3UFADCBjTFHMEUGA1UEAww+U2hlbiBaaGVuIGlUcnVzQ2hpbmEgQ2xhc3MgRW50ZXJwcmlzZSBTdWJzY3JpYmVyIENBIFNNMiAtIFRlc3QxGDAWBgNVBAsMD+a1i+ivlemDqOivleeUqDEbMBkGA1UECgwS5aSp6K+a5a6J5L+h6K+V55SoMQswCQYDVQQGEwJDTjAeFw0yMjAyMTUwMzA1MzVaFw0yMzAyMTUwMzA1MzVaMIGNMTAwLgYDVQQGDCfkv6Hpm4Xovr7ns7vnu5/lt6XnqIvogqHku73mnInpmZDlhazlj7gxMDAuBgNVBAoMJ+S/oembhei+vuezu+e7n+W3peeoi+iCoeS7veaciemZkOWFrOWPuDEVMBMGA1UECwwM5rWL6K+V6YOo6ZeoMRAwDgYDVQQDDAdzdW55YXJkMFkwEwYHKoZIzj0CAQYIKoEcz1UBgi0DQgAEcKKvHjHE9Y2exfJfYZOeWffq2A5k6RRUbBhMsjCKK3eciz1WkDGIdjAgW/VI++MMITimKMXq0bwnnmo2PTNvfqOB3jCB2zAJBgNVHRMEAjAAMAsGA1UdDwQEAwIFIDBqBgNVHR8EYzBhMF+gXaBbhllodHRwOi8vc3p0b3BjYS5zeml0cnVzLmNvbS5jbi9wdWJsaWMvaXRydXNjcmw/Q0E9NzMzNUExQUYzNzRBMUU4QjQwM0FCMUFDMkQwNjVDQUU3NUNBQjIzNjAfBgNVHSMEGDAWgBQrRjpP0Z4sztQfhsLWPZq/Jyhk9zAdBgNVHQ4EFgQUG6xZRL5VQ+DonJX4crqkUphJIA4wFQYHYIEcAQYKAgQKDAhJVFJVU0tNQzAMBggqgRzPVQGDdQUAA0gAMEUCIQCdLHm9pjihzyR9A5uXrTo4UC+Rpcm5vPGh4Do58bqRKgIgLpryVWqLVb8GqL91KdmXd7E7RrG7DjqiworD9TEmnLY="; - String s = CoderUtil.certAddHT(pCert2); - System.out.println(s); - X509 x509 = api.GetX509CertInfo(s); - System.out.println("公钥" + Util.bytes2HexString(x509.getPubKey())); - System.out.println("sn:" + x509.getSerialNumber()); - System.out.println("dn:" + x509.getSubject()); - System.out.println("getCert:" + x509.getCert()); - System.out.println("getIssuer:" + x509.getIssuer()); - System.out.println("getNotAfter:" + x509.getNotAfter()); - System.out.println("getNotBefore:" + x509.getNotBefore()); - } - - - @Test - public void testGetX509CertInfo2() { - - String pCert = "-----BEGIN CERTIFICATE-----\\r\\nMIIC0DCCAnSgAwIBAgIFEEBzAUEwDAYIKoEcz1UBg3UFADBcMQswCQYDVQQGEwJD\\r\\nTjEwMC4GA1UECgwnQ2hpbmEgRmluYW5jaWFsIENlcnRpZmljYXRpb24gQXV0aG9y\\r\\naXR5MRswGQYDVQQDDBJDRkNBIFRFU1QgU00yIE9DQTEwHhcNMjAxMTAzMDk1NTU4\\r\\nWhcNMjUxMTAzMDk1NTU4WjB1MQswCQYDVQQGEwJDTjEQMA4GA1UECgwHT0NBMVNN\\r\\nMjENMAsGA1UECwwEdGVzdDEZMBcGA1UECwwQT3JnYW5pemF0aW9uYWwtMjEqMCgG\\r\\nA1UEAwwhMDUxQGNoaW5hdW5pb25wYXlAWjkwNTI5MDAwMDAwOEAyMFkwEwYHKoZI\\r\\nzj0CAQYIKoEcz1UBgi0DQgAEkw27RvY8mAx6h7vnSW/+X3b++a1E6LzQTPWMOiKP\\r\\nAfZTqJMKeRnQNEKt+N7EA98YHVheOCT9TlZ3fkgtNZcH86OCAQYwggECMB8GA1Ud\\r\\nIwQYMBaAFGv+GNqPQjqmuG2zLoiDOjSiwTDhMAwGA1UdEwEB/wQCMAAwSAYDVR0g\\r\\nBEEwPzA9BghggRyG7yoBATAxMC8GCCsGAQUFBwIBFiNodHRwOi8vd3d3LmNmY2Eu\\r\\nY29tLmNuL3VzL3VzLTE0Lmh0bTA5BgNVHR8EMjAwMC6gLKAqhihodHRwOi8vdWNy\\r\\nbC5jZmNhLmNvbS5jbi9TTTIvY3JsMTM3MzYuY3JsMA4GA1UdDwEB/wQEAwIGwDAd\\r\\nBgNVHQ4EFgQUn9wz++O90r2Bc7qlzqeIhIVivD4wHQYDVR0lBBYwFAYIKwYBBQUH\\r\\nAwIGCCsGAQUFBwMEMAwGCCqBHM9VAYN1BQADSAAwRQIgNXTJts3vqvCbbhUKwnkI\\r\\nrv+HeDeyTwU4JJpBTWCR6TACIQCtQShpYt9jgxw6VSHpKEXnnWH9u4vYhXDoH42w\\r\\nWVaX6A==\\r\\n-----END CERTIFICATE-----"; - - String pCert2 = "-----BEGIN CERTIFICATE-----\n" + - "MIIDUjCCAjoCCQDEXN6JVLqjQzANBgkqhkiG9w0BAQsFADBrMQswCQYDVQQGEwJj\n" + - "bjELMAkGA1UECAwCemoxCzAJBgNVBAcMAmh6MQwwCgYDVQQKDAN4eWQxDTALBgNV\n" + - "BAsMBGFxeXkxCzAJBgNVBAMMAnpiMRgwFgYJKoZIhvcNAQkBFgkyMkBxcS5jb20w\n" + - "HhcNMjExMTE5MDc1NDM1WhcNMjExMjE5MDc1NDM1WjBrMQswCQYDVQQGEwJjbjEL\n" + - "MAkGA1UECAwCemoxCzAJBgNVBAcMAmh6MQwwCgYDVQQKDAN4eWQxDTALBgNVBAsM\n" + - "BGFxeXkxCzAJBgNVBAMMAnpiMRgwFgYJKoZIhvcNAQkBFgkyMkBxcS5jb20wggEi\n" + - "MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCrOL1rh39AzMJYD6bPmumW0aUi\n" + - "JW1U9SgGYF4FBFoN7DnfgSe9dDg6FIiT81kfqz+ydeACsFCkfdjXhsrI/SEvtkK6\n" + - "/Y3PMzMys01xKFoZywaOf4s9jSQXhDQxs82HgPkHAVGmIOdIzGV0MGaPyGKaUyLQ\n" + - "s3bYBO656rLFEuNGM6Hr0r6PtEEBvBoveK3CcYVZL9KzeOEQAXJlYMD1T7xetgZu\n" + - "obl/cbC2fmNA4xRqNA+qxherzF91zC2G0WMYdPubGkAaXFfiVUwuazCpQ60AECIy\n" + - "sYnR2m8+hbCEujTYrd2Na+a0e4T/HSzsN5lZ5dl8UMJ7pMsc/hH176fy+39LAgMB\n" + - "AAEwDQYJKoZIhvcNAQELBQADggEBACNyTOW6Glb6/jWBLJRmob09b/DA0xGSyRAM\n" + - "Qwij6ch1GInO3LKfkIiuty8EGHADRraZk6igUAthAMPInPy6P+CNvGx5U3qRk0nT\n" + - "hChQ23AkkBpzvr+7LmLFid3mmgnGwPUBJtor6ylCZbG2lIpUBrWQhHqRqWYiv3N1\n" + - "nnOQRe1pWdk/Jw3m7mlXO1xKb0XeFQ8bLZG15b6qgkWeyTnGju5+NPMNV3U3w9WE\n" + - "tHW9v9xxFj/++3+U0pMaYwhKz8PA7qVfiPiEIsU1SAiQRPwUUODZG+YYAz2lSOHS\n" + - "TN36nYmVbVuWMguNPKKXY2b2mosnU6t0xtXWHxMhVCF4Slity9s=\n" + - "-----END CERTIFICATE-----"; - - X509 x509 = api.GetX509CertInfo(pCert2); - System.out.println(Util.bytes2HexString(x509.getPubKey())); - } - - // 测试通过 - // 8017 - @Test - public void testGetX509CertFileC() { - String userId = "8012"; - String userId2 = "8001"; - - String s = api.GetX509CertFileC(userId2, 0); - System.out.println(s); - - X509 x509 = api.GetX509CertInfo(s); - System.out.println("颁发者DN为: " + x509.getIssuer()); - System.out.println("证书主题: " + x509.getSubject()); - } - - // 8017 - @Test - public void testGetX509CertFileBySN() { - String sn = "1004282452"; - String sn2 = "3C93000000000025"; - - String s = api.GetX509CertFileBySN(sn2, 0); - System.out.println(s); - X509 x509 = api.GetX509CertInfo(s); - System.out.println("证书序列号: " + x509.getSerialNumber()); - System.out.println("证书主题DN: " + x509.getSubject()); - } - - // 测试通过 - // 8005 - @Test - public void testDetachedSign() { - String publicKey = "034200043EDA3A107B7CC35CC005C7FBF0BB4E6B43A07EE14E360603D22ECA2A600B2D0FA03055D400D1240300F54648B849D13F50B330FF14351B5645B13686820A65BB"; - String orgData = "0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101"; - String testCertNo = "C=CN,O=Sunyard,OU=8001,CN=8001"; - - byte[] hash = api.SM3Hash(publicKey, Util.hexString2Bytes(orgData)); - System.out.println("hash:" + hash); - - String sign = api.detachedSign( - SydApi.DATA_HASH, - hash, - testCertNo - ); - - System.out.println("\t签名结果: " + sign); - - boolean verify = api.detachedVerify( - SydApi.DATA_HASH, - hash, - sign - ); - - System.out.println("\t验签结果: " + verify); - } - - // 测试通过 - // 8005 - @Test - public void testSm3AndDetachedSign() { - String publicKey = "0342000469DE3847DD6A66DA96DB8F2DCFA32E10E680FF2EF4A592079E7C3A44320BB15084E7CA9782A39B6E28F07C04FE00D68958A2605921E71712D56C1E4435A39FA5"; - String orgData = "FFFFFFFFFFFFFFFF"; - String testCertNo = "C=CN,O=Sunyard,OU=8001,CN=8001"; - - String sign = api.sm3AndDetachedSign(orgData.getBytes(), publicKey, testCertNo); - System.out.println("签名结果: " + sign); - - boolean b = api.sm3AndDetachedVerify(orgData.getBytes(), publicKey, sign); - System.out.println("验签结果:" + b); - } - - // 测试通过 - // 8005 - @Test - public void testSm3WithoutPKDetachedSign() { - String orgData = "FFFFFFFFFFFFFFFF"; - String testCertNo = "C=CN,O=Sunyard,OU=8001,CN=8001"; - - String sign = api.sm3WithoutPKDetachedSign(orgData.getBytes(), testCertNo); - System.out.println("签名结果: " + sign); - - boolean b = api.sm3WithoutPKDetachedVerify(orgData.getBytes(), sign); - System.out.println("验签结果:" + b); - } - - // 8026 - @Test - public void testDetachedSignbysn() { - //X509 证书的序列号 - String pCertSerial = "1004282452"; - //数据明文 - byte[] data2 = "asfkahfkahfkafadfhdaghfashadfaflsaldfasf".substring(0,32).getBytes(); - - //签名 - String bs = api.detachedSignbysn(0,data2,pCertSerial); - System.out.println(bs); - } - - // 测试通过 - // 4D41 - @Test - public void testGenerateMIYA() { - byte[] testData = "1234567812345678".getBytes(); - String mac = api.GenerateMIYA("123456", 1, SydApi.NALG_3DES, testData); - System.out.println("MAC = " + mac); - } - - // 测试通过 - // 4D43 - @Test - public void testVerifyMIYA() { - - // 000000000012345600300000001 - byte[] testData = "1234567812345678".getBytes(); - String mac = api.GenerateMIYA("123456", 1, SydApi.NALG_3DES, testData); - System.out.println("MAC = " + mac); - Boolean ret = api.VerifyMIYA( "123456", 1, SydApi.NALG_3DES, mac, testData); - if ( ret ){ - System.out.println("核押通过"); - } else { - System.out.println("核押不通过"); - } - } - - // 测试通过 - // QN - @Test - public void testSYD_SM2GenKeyPair() { - RetWrap retWrap = api.SYD_SM2GenKeyPair(); - printRetWrap(retWrap); - } - - // 测试通过 - // Q1 - @Test - public void testEncrypt_Data() { - byte[] bytes = api.Encrypt_Data(2, 1, 0, "XK123456212145212200A00000001", "1111111111111111".getBytes(), "122345678".getBytes()); - System.out.println(Util.bytes2HexString(bytes)); - } - - // 测试通过 - // Q2 - @Test - public void testDecrypt_Data() { - String dek = "XK123456212145212200A00000001"; - String infoData = "1111111111111111"; - String vector = "122345678"; - - - byte[] bytes = api.Encrypt_Data(2, 1, 0, dek, infoData.getBytes(), vector.getBytes()); - System.out.println(Util.bytes2HexString(bytes)); - - byte[] bytes1 = api.Decrypt_Data(2, 1, 0, dek, bytes, vector.getBytes()); - System.out.println(Util.bytes2HexString(bytes1)); - } - - - // YA - @Test - public void testSYD_Disperse() throws UnsupportedEncodingException { - //加解密密钥 - String key1 = "123123555555555500000000001"; - //原始数据 - byte[] data = "cdb1af4bb0ab6de6".getBytes("UTF-8"); - - //分散因子 - String data3 = "0000000000002456aece4be200050001"; - - String s = api.SYD_Disperse(key1, 0, 1, data3.getBytes(), 2, 0); - - } - - // 测试通过 - // PA - @Test - public void testSetPrintFormat() throws UnsupportedEncodingException { - api.setPrintFormat(new String(">L>003^0>033^4>L>003^1>023^P>033^5>053^Q>L>003^2>033^6>003^3>033^7>L>003THANK YOU>033>THANK YOU 中文>L>F".getBytes("UTF-8") , "GB2312")); - - } - - // QX - @Test - public void testSM2GetPublicKeyC_QX() { - String s = api.SM2GetPublicKeyC_QX(3, 0); - System.out.println(s); - } - - // 011E3030303030303030 - // 3930 - // 31313131313131313131313131313131 - // 32323232323232323232323232323232 - // 30303332 - // F9CC9E2B67C61043B87552E61F9F50120902EA5462FC65A29695FC8F5E0FF7AF - // 30303638 - // 03420004CAFC8EC6782D9DE8F834B7D47B9D9057A0F21DAB402694EC580723879CC221A1730977F0DE947A0D5390858EE1FD827A3BE2F07E5671131BF3BE1868D3333029 - // 30303638 - // 0342000424A686E34777690C732D2C04F707DAE37AAA346461AACFABDF00982D84BB27B9DEB717FCEF55BA7C288FC935C637FD0681028E69584BFDA7A38BDB4557E1551C - // 0FBE0F3D6BAB184A20A235BA8DF2494C8FFC0826F60C22D3E4D89776CBD203E03707D2D530232EFE8600282A6EF171816E83AFA20A7991BBF2AD30DC59C71E76 - - // 设备型号 - private String equipType = "1111111111111111"; - // 设备序号 - private String equipNo = "2222222222222222"; - // 设备密钥私钥 - private String equipSk = "F9CC9E2B67C61043B87552E61F9F50120902EA5462FC65A29695FC8F5E0FF7AF"; - // 设备密钥公钥 - private String equipPk = "03420004CAFC8EC6782D9DE8F834B7D47B9D9057A0F21DAB402694EC580723879CC221A1730977F0DE947A0D5390858EE1FD827A3BE2F07E5671131BF3BE1868D3333029"; - // 厂商公钥 - private String manuPk = "0342000424A686E34777690C732D2C04F707DAE37AAA346461AACFABDF00982D84BB27B9DEB717FCEF55BA7C288FC935C637FD0681028E69584BFDA7A38BDB4557E1551C"; - // 授权签名 - private String authSign = "0FBE0F3D6BAB184A20A235BA8DF2494C8FFC0826F60C22D3E4D89776CBD203E03707D2D530232EFE8600282A6EF171816E83AFA20A7991BBF2AD30DC59C71E76"; - - // 测试通过 - // 90 - @Test - public void testSetDevCert() { - - boolean b = api.setDevCert(equipType, equipNo, Util.hexString2Bytes(equipSk), Util.hexString2Bytes(equipPk), - Util.hexString2Bytes(manuPk), Util.hexString2Bytes(authSign)); - System.out.println(b); - } - - // 00B63030303030303030 - // 3931 - // 30303332 - // F9CC9E2B67C61043B87552E61F9F50120902EA5462FC65A29695FC8F5E0FF7AF - // 30303638 - // 03420004CAFC8EC6782D9DE8F834B7D47B9D9057A0F21DAB402694EC580723879CC221A1730977F0DE947A0D5390858EE1FD827A3BE2F07E5671131BF3BE1868D3333029 - // 0FBE0F3D6BAB184A20A235BA8DF2494C8FFC0826F60C22D3E4D89776CBD203E03707D2D530232EFE8600282A6EF171816E83AFA20A7991BBF2AD30DC59C71E76 - - // 测试通过 - // 91 - @Test - public void testChangeDevCert() { - boolean b = api.changeDevCert(Util.hexString2Bytes(equipSk), Util.hexString2Bytes(equipPk), Util.hexString2Bytes(authSign)); - System.out.println(b); - } - - // 测试通过 - // 92 - @Test - public void testGetDeviceCertiInfo() { - RetWrap deviceCertiInfo = api.getDeviceCertiInfo(); - printRetWrap(deviceCertiInfo, true); - } - - // 测试通过 - // 97 - @Test - public void testDeviceSignC() { - String hash = "11111111111111111111111111111111"; - String s = api.deviceSignC(hash.getBytes()); - System.out.println(s); - } - - // 测试通过 - // 8018 - @Test - public void testAttachedSignAndVerify() { - String dn = "C=CN,O=Sunyard,OU=8001,CN=8001"; - String orgData = "111111213323143243243"; - String sign = api.attachedSign(orgData.getBytes(), dn); - System.out.println("签名结果: " + sign); - -// String sign = "MIICsgYKKoEcz1UGAQQCAqCCAqIwggKeAgEBMQwwCgYIKoEcz1UBgxEwIAYKKoEcz1UGAQQCAaASBBAzMjE0MzEyMzQxMjQzMjE0oIIByTCCAcUwggFooAMCAQICCDyTAAAAAAAlMAwGCCqBHM9VAYN1BQAwJjELMAkGA1UEBhMCQ04xFzAVBgNVBAMMDlN1bnlhcmRTTTJSb290MB4XDTE3MDUxNzAyNTI0NFoXDTIyMDcyNTAyNTI0NFowPTELMAkGA1UEBhMCQ04xEDAOBgNVBAoMB1N1bnlhcmQxDTALBgNVBAsMBDgwMDExDTALBgNVBAMMBDgwMDEwWTATBgcqhkjOPQIBBggqgRzPVQGCLQNCAAQ+2joQe3zDXMAFx/vwu05rQ6B+4U42BgPSLsoqYAstD6AwVdQA0SQDAPVGSLhJ0T9QszD/FDUbVkWxNoaCCmW7o2cwZTAOBgNVHQ8BAf8EBAMCAMAwEwYDVR0lBAwwCgYIKwYBBQUHAwEwHwYDVR0jBBgwFoAU93/arv8hxtk6eq2g+6z+AqVO1cEwHQYDVR0OBBYEFAMWZaY2AwaQTNiFLpsa0dyCzBZ6MAwGCCqBHM9VAYN1BQADSQAwRgIhAIl2ZHGfln5hedcousARzZ2yeUjUbxSFMmhMmr5t6Q6nAiEAvqYX/KpIcvnPyB/Yiil+oq6DFdVM6P3vDxBhU/8taXExgZswgZgCAQEwMjAmMQswCQYDVQQGEwJDTjEXMBUGA1UEAwwOU3VueWFyZFNNMlJvb3QCCDyTAAAAAAAlMAoGCCqBHM9VAYMRMAsGCSqBHM9VAYItAQRGMEQCIEons2hit2967ciJo3QipM4lJgd1K3QmwOp9O/n8Tl86AiB9V6Z7jQogZFtoIz6kwAI6OQVnjbtJlmO31bZxgYRwKg=="; - boolean verify = api.attachedVerify(sign); - System.out.println("验签结果: " + verify); - } - - // 测试通过 - // 8018 - @Test - public void testAttachedSignAndVerifyRD() { - String dn = "C=CN,O=Sunyard,OU=8001,CN=8001"; - String orgData = "111111213323143243243"; - String sign = api.attachedSign(orgData.getBytes(), dn); - System.out.println("签名结果: " + sign); - -// String sign = "MIICsgYKKoEcz1UGAQQCAqCCAqIwggKeAgEBMQwwCgYIKoEcz1UBgxEwIAYKKoEcz1UGAQQCAaASBBAzMjE0MzEyMzQxMjQzMjE0oIIByTCCAcUwggFooAMCAQICCDyTAAAAAAAlMAwGCCqBHM9VAYN1BQAwJjELMAkGA1UEBhMCQ04xFzAVBgNVBAMMDlN1bnlhcmRTTTJSb290MB4XDTE3MDUxNzAyNTI0NFoXDTIyMDcyNTAyNTI0NFowPTELMAkGA1UEBhMCQ04xEDAOBgNVBAoMB1N1bnlhcmQxDTALBgNVBAsMBDgwMDExDTALBgNVBAMMBDgwMDEwWTATBgcqhkjOPQIBBggqgRzPVQGCLQNCAAQ+2joQe3zDXMAFx/vwu05rQ6B+4U42BgPSLsoqYAstD6AwVdQA0SQDAPVGSLhJ0T9QszD/FDUbVkWxNoaCCmW7o2cwZTAOBgNVHQ8BAf8EBAMCAMAwEwYDVR0lBAwwCgYIKwYBBQUHAwEwHwYDVR0jBBgwFoAU93/arv8hxtk6eq2g+6z+AqVO1cEwHQYDVR0OBBYEFAMWZaY2AwaQTNiFLpsa0dyCzBZ6MAwGCCqBHM9VAYN1BQADSQAwRgIhAIl2ZHGfln5hedcousARzZ2yeUjUbxSFMmhMmr5t6Q6nAiEAvqYX/KpIcvnPyB/Yiil+oq6DFdVM6P3vDxBhU/8taXExgZswgZgCAQEwMjAmMQswCQYDVQQGEwJDTjEXMBUGA1UEAwwOU3VueWFyZFNNMlJvb3QCCDyTAAAAAAAlMAoGCCqBHM9VAYMRMAsGCSqBHM9VAYItAQRGMEQCIEons2hit2967ciJo3QipM4lJgd1K3QmwOp9O/n8Tl86AiB9V6Z7jQogZFtoIz6kwAI6OQVnjbtJlmO31bZxgYRwKg=="; - String verify = api.attachedVerifyRD(sign); - System.out.println("验签结果: " + verify); - } - - // 测试通过 - // 8018 - @Test - public void testAttachedSignAndVerifyGetX509() { - String dn = "C=CN,O=Sunyard,OU=8001,CN=8001"; - String orgData = "111111213323143243243"; - String sign = api.attachedSign(orgData.getBytes(), dn); - System.out.println("签名结果: " + sign); - -// String sign = "MIICsgYKKoEcz1UGAQQCAqCCAqIwggKeAgEBMQwwCgYIKoEcz1UBgxEwIAYKKoEcz1UGAQQCAaASBBAzMjE0MzEyMzQxMjQzMjE0oIIByTCCAcUwggFooAMCAQICCDyTAAAAAAAlMAwGCCqBHM9VAYN1BQAwJjELMAkGA1UEBhMCQ04xFzAVBgNVBAMMDlN1bnlhcmRTTTJSb290MB4XDTE3MDUxNzAyNTI0NFoXDTIyMDcyNTAyNTI0NFowPTELMAkGA1UEBhMCQ04xEDAOBgNVBAoMB1N1bnlhcmQxDTALBgNVBAsMBDgwMDExDTALBgNVBAMMBDgwMDEwWTATBgcqhkjOPQIBBggqgRzPVQGCLQNCAAQ+2joQe3zDXMAFx/vwu05rQ6B+4U42BgPSLsoqYAstD6AwVdQA0SQDAPVGSLhJ0T9QszD/FDUbVkWxNoaCCmW7o2cwZTAOBgNVHQ8BAf8EBAMCAMAwEwYDVR0lBAwwCgYIKwYBBQUHAwEwHwYDVR0jBBgwFoAU93/arv8hxtk6eq2g+6z+AqVO1cEwHQYDVR0OBBYEFAMWZaY2AwaQTNiFLpsa0dyCzBZ6MAwGCCqBHM9VAYN1BQADSQAwRgIhAIl2ZHGfln5hedcousARzZ2yeUjUbxSFMmhMmr5t6Q6nAiEAvqYX/KpIcvnPyB/Yiil+oq6DFdVM6P3vDxBhU/8taXExgZswgZgCAQEwMjAmMQswCQYDVQQGEwJDTjEXMBUGA1UEAwwOU3VueWFyZFNNMlJvb3QCCDyTAAAAAAAlMAoGCCqBHM9VAYMRMAsGCSqBHM9VAYItAQRGMEQCIEons2hit2967ciJo3QipM4lJgd1K3QmwOp9O/n8Tl86AiB9V6Z7jQogZFtoIz6kwAI6OQVnjbtJlmO31bZxgYRwKg=="; - X509 verify = api.attachedVerifyAndGetX509(sign); - System.out.println("验签结果: " + verify); - } - - // 测试通过 - // 8018 - @Test - public void testAttachedSignAndVerifyGetAll() { - String dn = "C=CN,O=Sunyard,OU=8001,CN=8001"; - String orgData = "111111213323143243243"; - String sign = api.attachedSign(orgData.getBytes(), dn); - System.out.println("签名结果: " + sign); - - RetWrap verify = api.attachedVerifyAndGetAll(sign); - if (verify != null) { - System.out.println("x509公钥: " + Util.bytes2HexString(((X509)verify.get("x509")).getPubKey())); - System.out.println("签名原数据: " + verify.get("oData")); - } - } - - // 00883030303030303030 - // 3938 - // 30313232 - // 3078022017665B26FD20D2BE19CBCF275C43D7ECF95BBEEC2C2D1A79DF5068629D6FDDB302204A76974ADD337B5F3EAA0191AF6C7ADEE6BA86B30B828B7B32948B8DB0FF3E1A04204E4A371B154D42CC2536033F8EE8854FE0EF4BC79CB78A7CEA0C335147C7DF5B0410CF8690DC1D9ECD1951E86B6AE26A94DB - - // 00880000000000000000 - // 3938 - // 30313232 - // 3078022017665B26FD20D2BE19CBCF275C43D7ECF95BBEEC2C2D1A79DF5068629D6FDDB302204A76974ADD337B5F3EAA0191AF6C7ADEE6BA86B30B828B7B32948B8DB0FF3E1A04204E4A371B154D42CC2536033F8EE8854FE0EF4BC79CB78A7CEA0C335147C7DF5B0410CF8690DC1D9ECD1951E86B6AE26A94DB - - // 98 - @Test - public void testSetToken() { - - String tocken = "3078022017665B26FD20D2BE19CBCF275C43D7ECF95BBEEC2C2D1A79DF5068629D6FDDB302204A76974ADD337B5F3EAA0191AF6C7ADEE6BA86B30B828B7B32948B8DB0FF3E1A04204E4A371B154D42CC2536033F8EE8854FE0EF4BC79CB78A7CEA0C335147C7DF5B0410CF8690DC1D9ECD1951E86B6AE26A94DB"; - boolean b = api.setToken(Util.hexString2Bytes(tocken)); - System.out.println(b); - - } - - // 00223030303030303030 - // 3939 - // 30303230 - // 3333333333333333333333333333333333333333 - - // 00220000000000000000 - // 3939 - // 30303230 - // 3333333333333333333333333333333333333333 - - // 99 - @Test - public void testCalcAuthHead() { - String info = "33333333333333333333"; - byte[] bytes = api.calcAuthHead(info.getBytes()); - System.out.println(Util.bytes2HexString(bytes)); - } - - /** - * 直接发送数据 - */ - @Test - public void testDirect() { - String s = "000A00000000000000004849"; - api.directBytes(Util.hexString2Bytes(s)); - } - - - @Test - public void test() throws IOException { - String path = "E:\\work\\sunyard\\hsm\\projects\\sydapi\\src\\test\\java\\com\\sunyard\\sydapi\\test\\TestAllMethods.java"; - BufferedReader reader = new BufferedReader(new FileReader(path)); - - String line = null; - String[] list = new String[3]; - int i = 0; - int j = 0; - int z = 0; - - while ((line = reader.readLine()) != null) { - if ("@Test".equals(line.trim())) { - j++; - int index = 0; - if ((index = getIndex(list, "// 测试通过")) != -1) { - System.out.println(list[(index + 1) % 3].substring(3)); - z++; - } - } else { - list[i % 3] = line.trim(); - i++; - } - } - System.out.println(j); - System.out.println(z); - } - - public int getIndex(String[] list, String str) { - - for (int i = 0; i < list.length; i++) { - if (str.equals(list[i])) { - return i; - } - } - - return -1; - } - - @Test - public void test01() throws IOException { - String path = "C:\\Users\\edgar\\Desktop\\新建文本文档 (2).txt"; - BufferedReader reader = new BufferedReader(new FileReader(path)); - - String line = null; - while ((line = reader.readLine()) != null) { - if (line.startsWith("指令")) { - System.out.println(line.substring(3)); - } - } - } - - @Test - public void test02() throws IOException { - String path = "E:\\work\\sunyard\\hsm\\projects\\sydapi\\src\\main\\java\\racal\\sunyard\\main\\SydApi4j.java"; - - BufferedReader br = new BufferedReader(new FileReader(path)); - - String line = null; - - while ((line = br.readLine()) != null) { - String trimLine = line.trim(); - if (trimLine.startsWith("Proto")) { - System.out.println(trimLine.substring(5, trimLine.indexOf(" "))); - } - } - } - - @Test - public void getAllMethod() { - Method[] methods = SydApi4j.class.getDeclaredMethods(); - for (Method method : methods) { - Class returnType = method.getReturnType(); - - } - } -} - +// System.out.println(api.importCert(inputStream2ByteArray(path), "1234".getBytes())); +// +// try { +// this.api.disconnect(); +// } catch (Exception e) { +// e.printStackTrace(); +// } +// } +// +// +// @Test +// public void testImportCert2() throws IOException { +// +// String cert2 = "-----BEGIN CERTIFICATE-----\n" + +// "MIIB4TCCAYSgAwIBAgIIPJMAAAAAACswDAYIKoEcz1UBg3UFADAmMQswCQYDVQQG\n" + +// "EwJDTjEXMBUGA1UEAwwOU3VueWFyZFNNMlJvb3QwHhcNMTcxMTE3MDIzMDUxWhcN\n" + +// "MjMwMTI1MDIzMDUxWjBZMQswCQYDVQQGEwJDTjELMAkGA1UECAwCWkoxCzAJBgNV\n" + +// "BAcMAkhaMQ4wDAYDVQQKDAVISkpZUzERMA8GA1UECwwIMDAwMDAwMDAxDTALBgNV\n" + +// "BAMMBDIyMjIwWTATBgcqhkjOPQIBBggqgRzPVQGCLQNCAATxqegqlmc/lduzBaKR\n" + +// "EyeNuPf78RA3wfJuhAv8zymLwQ6doefs1Iul+kMOukhfwY9aEhVdqws34FZMm2vs\n" + +// "1+wXo2cwZTAOBgNVHQ8BAf8EBAMCAMAwEwYDVR0lBAwwCgYIKwYBBQUHAwEwHwYD\n" + +// "VR0jBBgwFoAU93/arv8hxtk6eq2g+6z+AqVO1cEwHQYDVR0OBBYEFHfjFl72707A\n" + +// "6s+YVuGvEuyvFWTMMAwGCCqBHM9VAYN1BQADSQAwRgIhALzg7+QW7RU4phv+4arE\n" + +// "v0IOeaA6dtR8VT4Bwin9oHTWAiEA9kLESGiYm8L5Htf7GBXgH+pk7BJ68clml41B\n" + +// "/ejZglI=\n" + +// "-----END CERTIFICATE-----"; +// +// String cert = "-----BEGIN CERTIFICATE-----\n" + +// "MIID3QYKKoEcz1UGAQQCAqCCA80wggPJAgEBMQ4wDAYIKoEcz1UBgxEFADAMBgoq\n" + +// "gRzPVQYBBAIBoIICxDCCAsAwggJjoAMCAQICEBAAAAAAAAAAAAAAEEJYBCMwDAYI\n" + +// "KoEcz1UBg3UFADBcMQswCQYDVQQGEwJDTjEwMC4GA1UECgwnQ2hpbmEgRmluYW5j\n" + +// "aWFsIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MRswGQYDVQQDDBJDRkNBIFRFU1Qg\n" + +// "U00yIE9DQTEwHhcNMjEwMTExMDk1MjI1WhcNMjIwMTExMDk1MjI1WjB2MQswCQYD\n" + +// "VQQGEwJjbjEVMBMGA1UECgwMQ0ZDQSBURVNUIENBMQ8wDQYDVQQLDAZDQ0ZDQ0Ix\n" + +// "FDASBgNVBAsMC0VudGVycHJpc2VzMSkwJwYDVQQDDCAwNDFAODkwNDI5MDA5OTk5\n" + +// "RkRAQ0JDQ0AwMDAwMDAwMTBZMBMGByqGSM49AgEGCCqBHM9VAYItA0IABExU5zuJ\n" + +// "3pVl49mS3rTBwUcPuiI/zDR/w117PkpCgJ7m0kGyyorj1h2bxM62PthpNy99KPnk\n" + +// "9gEvS696ZE5s8LGjgeowgecwHwYDVR0jBBgwFoAUa/4Y2o9COqa4bbMuiIM6NKLB\n" + +// "MOEwSAYDVR0gBEEwPzA9BghggRyG7yoBATAxMC8GCCsGAQUFBwIBFiNodHRwOi8v\n" + +// "d3d3LmNmY2EuY29tLmNuL3VzL3VzLTE0Lmh0bTA5BgNVHR8EMjAwMC6gLKAqhiho\n" + +// "dHRwOi8vdWNybC5jZmNhLmNvbS5jbi9TTTIvY3JsMTY4NzYuY3JsMAsGA1UdDwQE\n" + +// "AwID6DAdBgNVHQ4EFgQUypxjmN7VBcoruhBRWmmFNv9yG1IwEwYDVR0lBAwwCgYI\n" + +// "KwYBBQUHAwIwDAYIKoEcz1UBg3UFAANJADBGAiEA1IQTRQf5aaDJzzVxWLRml1ZS\n" + +// "qQd9FPFeKZJnbzGQIQMCIQD/gY5+H1nytcVAx8hGtUPssklmI+9+vTdOF5LaKMR+\n" + +// "jzGB3TCB2gIBATBwMFwxCzAJBgNVBAYTAkNOMTAwLgYDVQQKDCdDaGluYSBGaW5h\n" + +// "bmNpYWwgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxGzAZBgNVBAMMEkNGQ0EgVEVT\n" + +// "VCBTTTIgT0NBMQIQEAAAAAAAAAAAAAAQQlgEIzAMBggqgRzPVQGDEQUAMA0GCSqB\n" + +// "HM9VAYItAQUABEYwRAIgXmjY/FIR8qudmZGsIQUivZDt3/73dGojVjj5L76OcJIC\n" + +// "IAHu0G242uYPY2B8zMkGw7kQ1C1xgRipEmlC1GWwMCz0\n" + +// "-----END CERTIFICATE-----"; +// +// String jgh = "00000000"; +// System.out.println(api.importCert(Util.getSafeBytes(cert), null)); +// } +// +// @Test +// public void testimportCertAddHT() { +// String cert1 = "MIIB4TCCAYSgAwIBAgIIPJMAAAAAACswDAYIKoEcz1UBg3UFADAmMQswCQYDVQQGEwJDTjEXMBUGA1UEAwwOU3VueWFyZFNNMlJvb3QwHhcNMTcxMTE3MDIzMDUxWhcNMjMwMTI1MDIzMDUxWjBZMQswCQYDVQQGEwJDTjELMAkGA1UECAwCWkoxCzAJBgNVBAcMAkhaMQ4wDAYDVQQKDAVISkpZUzERMA8GA1UECwwIMDAwMDAwMDAxDTALBgNVBAMMBDIyMjIwWTATBgcqhkjOPQIBBggqgRzPVQGCLQNCAATxqegqlmc/lduzBaKREyeNuPf78RA3wfJuhAv8zymLwQ6doefs1Iul+kMOukhfwY9aEhVdqws34FZMm2vs1+wXo2cwZTAOBgNVHQ8BAf8EBAMCAMAwEwYDVR0lBAwwCgYIKwYBBQUHAwEwHwYDVR0jBBgwFoAU93/arv8hxtk6eq2g+6z+AqVO1cEwHQYDVR0OBBYEFHfjFl72707A6s+YVuGvEuyvFWTMMAwGCCqBHM9VAYN1BQADSQAwRgIhALzg7+QW7RU4phv+4arEv0IOeaA6dtR8VT4Bwin9oHTWAiEA9kLESGiYm8L5Htf7GBXgH+pk7BJ68clml41B/ejZglI="; +// +// String cert2 = "MIID3QYKKoEcz1UGAQQCAqCCA80wggPJAgEBMQ4wDAYIKoEcz1UBgxEFADAMBgoqgRzPVQYBBAIBoIICxDCCAsAwggJjoAMCAQICEBAAAAAAAAAAAAAAEEJYBCMwDAYIKoEcz1UBg3UFADBcMQswCQYDVQQGEwJDTjEwMC4GA1" + +// "UECgwnQ2hpbmEgRmluYW5jaWFsIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MRswGQYDVQQDDBJDRkNBIFRFU1QgU00yIE9DQTEwHhcNMjEwMTExMDk1MjI1WhcNMjIwMTExMDk1MjI1WjB2MQswCQYDVQQGEwJjbjEVMBMGA1UECgwMQ0ZDQSBURVNUIENBMQ8wDQYDVQQLDAZDQ0ZDQ0IxF" + +// "DASBgNVBAsMC0VudGVycHJpc2VzMSkwJwYDVQQDDCAwNDFAODkwNDI5MDA5OTk5RkRAQ0JDQ0AwMDAwMDAwMTBZMBMGByqGSM49AgEGCCqBHM9VAYItA0IABExU5zuJ3pVl49mS3rTBwUcPuiI/zDR/w117PkpCgJ7m0kGyyorj1h2bxM62PthpNy99KPnk9gEvS696ZE5s8LGjgeowgecw" + +// "HwYDVR0jBBgwFoAUa/4Y2o9COqa4bbMuiIM6NKLBMOEwSAYDVR0gBEEwPzA9BghggRyG7yoBATAxMC8GCCsGAQUFBwIBFiNodHRwOi8vd3d3LmNmY2EuY29tLmNuL3VzL3VzLTE0Lmh0bTA5BgNVHR8EMjAwMC6gLKAqhihodHRwOi8vdWNybC5jZmNhLmNvbS5jbi9TTTIvY3JsMTY4NzY" + +// "uY3JsMAsGA1UdDwQEAwID6DAdBgNVHQ4EFgQUypxjmN7VBcoruhBRWmmFNv9yG1IwEwYDVR0lBAwwCgYIKwYBBQUHAwIwDAYIKoEcz1UBg3UFAANJADBGAiEA1IQTRQf5aaDJzzVxWLRml1ZSqQd9FPFeKZJnbzGQIQMCIQD/gY5+H1nytcVAx8hGtUPssklmI+9+vTdOF5LaKMR+jzGB3T" + +// "CB2gIBATBwMFwxCzAJBgNVBAYTAkNOMTAwLgYDVQQKDCdDaGluYSBGaW5hbmNpYWwgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxGzAZBgNVBAMMEkNGQ0EgVEVTVCBTTTIgT0NBMQIQEAAAAAAAAAAAAAAQQlgEIzAMBggqgRzPVQGDEQUAMA0GCSqBHM9VAYItAQUABEYwRAIgXmjY/FIR8" + +// "qudmZGsIQUivZDt3/73dGojVjj5L76OcJICIAHu0G242uYPY2B8zMkGw7kQ1C1xgRipEmlC1GWwMCz0"; +// +// System.out.println(cert2); +// +// String jgh = "00000000"; +// +// String DN = "C=CN,O=Sunyard,OU=8001,CN=8001"; +// +// String sign = api.SYD_DetachedSign(cert2.getBytes(), DN); +// System.out.println("签名结果: " + sign); +// +// /** +// * 上传指定证书到加密设备,并在证书前后加上begin和end +// * @param certData 证书的字节数组 +// * @param organizationId 机构号的字节数组 +// * @return +// */ +// RetWrap retWrap = api.importCertAddHT(sign, null); +// System.out.println(retWrap); +// } +// +// @Test +// public void testags() { +// +// String certData = "11111111111111111111111111111111111111111111111111111111111111111111111111"; +// +// final String head = "-----BEGIN CERTIFICATE-----\n"; +// final String tail = "-----END CERTIFICATE-----"; +// final String wrap = "\n"; +// +// int num = certData.length() % 64 == 0 ? certData.length() / 64: certData.length() / 64 + 1; +// +// StringBuilder sb = new StringBuilder(); +// sb.append(head); +// +// for (int i = 0; i < num; i++) { +// String substring; +// if (i == num - 1) { +// substring = certData.substring(i * 64); +// } else { +// substring = certData.substring(i * 64, (i + 1) * 64); +// } +// sb.append(substring).append(wrap); +// } +// sb.append(tail); +// +// System.out.println(sb); +// } +// +// +// String pUserId = "1572127378000000"; +// String publicKey = "03420004C51A40A094B6A14500B2980603D68CA263FF1BA238AFB17BB8B791C5F444465A7" + +// "49B68B4584C83E7BEF66DE2446177E14DBE0F32691F54B1636CC73334A1A94D"; +// String orgData = "FFFFFFFFFFFFFFFF"; +// String certId = "0000000011111112"; +// +// // 测试通过 +// // 74 +// @Test +// public void testSM2SignC() { +// String userId = "1111111111111113"; +// String certNo = "1234567812345678"; +// String thisPublicKey = "03420004549B6A1A09A5D0D9432C6829D443F85ED8785340FC1AB14118BB7637830C808F7A888DF0C4F988EA6FF2EE6C76ECD00C4B7CEC92CC8EA365F8EA291041CAB231"; +// String thisOrgData = "FFFFFFFFFFFFFFFF"; +// +// String s = api.SM2SignC(userId, certNo, 1, Util.hexString2Bytes(thisPublicKey), thisOrgData.getBytes()); +// System.out.println(s); +// } +// +// // 测试通过 +// // 74 +// @Test +// public void testSM2SignC2() { +// String thisPublicKey = "03420004549B6A1A09A5D0D9432C6829D443F85ED8785340FC1AB14118BB7637830C808F7A888DF0C4F988EA6FF2EE6C76ECD00C4B7CEC92CC8EA365F8EA291041CAB231"; +// String thisOrgData = "FFFFFFFFFFFFFFFF"; +// +// String s = api.SM2SignC(1, "111111111111111300000000001", Util.hexString2Bytes(thisPublicKey), thisOrgData.getBytes()); +// System.out.println(s); +// } +// +// // 测试通过 +// // 74 +// @Test +// public void testSM2SignC3() { +// String privateKey = "00010000D7DBFD26A371D3B5BA58D3ECA98EAEFC1BCB65FA0DBBCFBC551E4315B8B2A8700000000000000000000000000000000000000000000000000000000000000000"; +// String thisPublicKey = "034200042E624577E3BF1A510804346D1054B9205D97B4579D6528C25CAE6B74E5CDD19774AFA17CD9017E6BCBD8D9F3903492CD5288932941583E113C804537B69CDD46"; +// String thisOrgData = "FFFFFFFFFFFFFFFF"; +// +// String s = api.SM2SignC(0, privateKey, Util.hexString2Bytes(thisPublicKey), thisOrgData.getBytes()); +// System.out.println(s); +// } +// +// // 00C40000000000000001 +// // 3735 +// // 30303731 +// // 3045022100E5C51AE465EB085AC0A864414617D50776F7E93F9026F5E88FD8C1DC9DB38E9F022048A6E3CBE58837012FFF4281C8B53B98DCFBD6C250F0CD153C640C53FF8D78FB +// // 31 +// // 3136 +// // 31323334353637383132333435363738 +// // 30303136 +// // 46464646464646464646464646464646 +// // 30303638 +// // 03420004549B6A1A09A5D0D9432C6829D443F85ED8785340FC1AB14118BB7637830C808F7A888DF0C4F988EA6FF2EE6C76ECD00C4B7CEC92CC8EA365F8EA291041CAB231 +// +// // 测试通过 +// // 75 +// @Test +// public void testSM2Verify2() { +// String privateKey = "AAA87526B2A261FF5468E489CF5E1E832BED34C31DCDA5D5093247FC20F6A8A7"; +// String thisPublicKey = "C6084B3C227D6AD9201F36122418BDB13016678FC68D61E96F03C56702CFAE27B0190F48E9E9F05D3F550F18F1E6028B6B54F44A0272E16A9436F459A9D706BE"; +// String thisOrgData = "FFFFFFFFFFFFFFFF"; +// +// String s = api.SM2SignC(0, privateKey, Util.hexString2Bytes(thisPublicKey), thisOrgData.getBytes()); +// +// System.out.println(s); +// boolean b = api.SM2Verify( Util.hexString2Bytes(thisPublicKey), thisOrgData.getBytes(), s); +// System.out.println(b); +// } +// +// @Test +// public void testaaba() throws UnsupportedEncodingException { +// String orgData = "30111020220210200002|+|12.35|+|1|+|301|+||+||+||+||-|85873323882200000022|+|1|+|310000|+|310069037013006623257|+|RMB|+|物料池预备数据测试十|+|310000|+|310069037013006522872|+|RMB|+|大批量加密测试二十|+|交通银行上海奉贤支行|+|301290050471|+|12.35|+|0|+|0|+||+|1|+|2022[0002]00021|+|20220210|+||+|1|+||+||+||+||+||+||+||+||+||+|0.00|+||+|0|+||-|"; +// String pk = "03420004AE179895745EDF2C7822BA15487F9B2FCC978597780A4EF228EC5B70AC7073174B8F457505BE4611809932170730EA0D325A12971C6699B0E51943369E1802D2"; +// String sign = "MEUCICCTC1KiPkaftcCRfvMRrrxG1cc21zPWqgDbQHUV7NCKAiEAjO+Kdixwp2mJu5OTdBbwqCOzWslmkZ3QVdxlTcUqKEo="; +// +// System.out.println("解密: " + Util.bytes2HexString(Base64.getDecoder().decode(sign))); +// +// boolean b = api.SM2Verify( Util .hexString2Bytes(pk), orgData.getBytes("gbk"), sign); +// System.out.println(b); +// } +// +// +// // 75 +// @Test +// public void testaabac() throws UnsupportedEncodingException { +// String orgData = "30111020220210200002|+|12.35|+|1|+|301|+||+||+||+||-|85873323882200000022|+|1|+|310000|+|310069037013006623257|+|RMB|+|物料池预备数据测试十|+|310000|+|310069037013006522872|+|RMB|+|大批量加密测试二十|+|交通银行上海奉贤支行|+|301290050471|+|12.35|+|0|+|0|+||+|1|+|2022[0002]00021|+|20220210|+||+|1|+||+||+||+||+||+||+||+||+||+|0.00|+||+|0|+||-|"; +// +// String pk = "03420004AE179895745EDF2C7822BA15487F9B2FCC978597780A4EF228EC5B70AC7073174B8F457505BE4611809932170730EA0D325A12971C6699B0E51943369E1802D2"; +// String sign = "MEUCICCTC1KiPkaftcCRfvMRrrxG1cc21zPWqgDbQHUV7NCKAiEAjO+Kdixwp2mJu5OTdBbwqCOzWslmkZ3QVdxlTcUqKEo="; +// +// // 这里,不管是签名还是验签,都需要在外部做一次hash。 +// byte[] hash = api.SM3Hash(pk, orgData.getBytes("gbk")); +// +// System.out.println("hash: " + Util.bytes2HexString(hash)); +// +// boolean b = api.SM2Verify(SydApi.DATA_HASH, Util.hexString2Bytes(pk), hash, sign); +// System.out.println("验签结果: " + b); +// } +// +// // 测试通过 +// // 75 +// @Test +// public void testSM2Verify3() { +// +// String thisPublicKey = "034200048043AF118B45629857DB693105849B2617FED249D59DFD29BE9A891ADEE7441A2D8C62020953DAEF038184E0244310CF2123C507F26F5380FFECC8D53E79B24E"; +// String thisOrgData = "FFFFFFFFFFFFFFFF"; +// +// String s = api.SM2SignC(1, "111111111111115100100000001", Util.hexString2Bytes(thisPublicKey), thisOrgData.getBytes()); +// +// // gVIu3Ng+/pysU8uwRKBgouhqqA5fA9Qtr6OpgL3KD8+M+m4XzKQcAydr+87XFeGzxiow0CEagbcffRgEtewR9w== +// System.out.println(s); +// System.out.println("DecBase64:" + Util.bytes2HexString(Base64.getDecoder().decode(s))); +// boolean b = api.SM2Verify( Util.hexString2Bytes(thisPublicKey), thisOrgData.getBytes(), s); +// System.out.println(b); +// } +// +// // 测试通过 +// // 75 +// @Test +// public void testSM2Verify() { +// +// String userId = "1111111111111149"; +// String certNo = "1234567812345678"; +// String thisPublicKey = "03420004080589A33A4DB304A3C48355761AC216B8BB5493966996E532B664A5B9CD8F1374F0DAACBF3F6D1F0E48E10DAA91889DB632FF4BE19D903502680D1AB56584D5"; +// String thisOrgData = "FFFFFFFFFFFFFFFF"; +// +// String s = api.SM2SignC(userId, certNo, 1, Util.hexString2Bytes(thisPublicKey), thisOrgData.getBytes()); +// +// System.out.println(s); +// boolean b = api.SM2Verify(certNo, 1, Util.hexString2Bytes(thisPublicKey), thisOrgData.getBytes(), s); +// System.out.println(b); +// } +// +// /** +// * 外部做hash,避免当原始数据过长时解析参数时ByteBuffer长度不够时报错的问题 +// */ +// // 测试通过 +// // 75 +// @Test +// public void testSM2SignAndVerify() { +// String privateKey = "000100009FBA90C22E18982D60022C683219F72DAAA1B878A094181381486FC5137B1B160000000000000000000000000000000000000000000000000000000000000000"; +// String thisPublicKey = "03420004E5888368B9D5BC319FE48AB92123857E696EFB1A7E08D75DD5C3C5A5E9FA18099EFFCAFD61A0838527D36C7FA6AE8E2649FB89883FC44A494830CE642A03DC24"; +// String orgData = "11111111111111"; +// +// // 这里,不管是签名还是验签,都需要在外部做一次hash。 +// byte[] hash = api.SM3Hash(thisPublicKey, orgData.getBytes()); +// String s = api.SM2Sign(SydApi.DATA_HASH, Util.hexString2Bytes(privateKey), hash); +// +// System.out.println("decBase64:" + Util.bytes2HexString(Util.decodeBase64(s))); +// boolean b = api.SM2Verify(SydApi.DATA_HASH, Util.hexString2Bytes(thisPublicKey), hash, s); +// System.out.println("验签结果: " + b); +// } +// +// // 测试通过 +// // 77 +// @Test +// public void testSM2Encrypt() { +// api.SM2Encrypt(Util.hexString2Bytes(publicKey), orgData.getBytes()); +// } +// +// // 测试通过 +// // 78 +// @Test +// public void testSM2DecryptC() { +// String certId = "1111111111111151"; +// String publicKey = "034200048043AF118B45629857DB693105849B2617FED249D59DFD29BE9A891ADEE7441A2D8C62020953DAEF038184E0244310CF2123C507F26F5380FFECC8D53E79B24E"; +// String orgData = "FFFFFFFFFFF1111111111FFFFF"; +// String s = api.SM2Encrypt(Util.hexString2Bytes(publicKey), orgData.getBytes()); +// +// System.out.println("加密后的数据: " + s); +// System.out.println("解base64格式之后: " + Util.bytes2HexString(Base64.getDecoder().decode(s))); +// byte[] pOrgData = SYMUtil.base64EnData2DerEnData(s); +// System.out.println("加密后的数据解base64-2: " + Util.bytes2HexString(pOrgData)); +// +// byte[] bytes = api.SM2DecryptC(certId, s); +// +// System.out.println("decData:" + new String(bytes)); +// } +// +// // 测试通过 +// // 78 +// @Test +// public void testSYD_SM2_Encrypt() { +// +// String sk="000100001C9588B521C2ECDDF0515D2829F3EFB26E5FE3E49CF96E3438FFEB7363845A110000000000000000000000000000000000000000000000000000000000000000"; +// String publicKey = "03420004A8A03F380DDD8C414980FCA5C0A981E190A4528BF87C9FDAA30881CEE9EC83CC3DB93AE1B4FF529A0D0D9D42EDFDCEB46470D1046EAC5E4F32C31083C72C050F"; +// String orgData = "FFFFFFFFFFF1111111111FFFFF"; +// +// byte[] encData = api.SYD_SM2_Encrypt(Util.hexString2Bytes(publicKey), orgData.getBytes()); +// System.out.println("加密后的数据: " + Util.bytes2HexString(encData)); +// +// byte[] bytes = api.SYD_SM2_Decrypt(Util.hexString2Bytes(sk), encData); +// System.out.println("decData:" + new String(bytes)); +// } +// +// // 测试通过 +// // 78 +// @Test +// public void testSYD_SM2_Encrypt2() { +// +// String publicKey = "03420004A8A03F380DDD8C414980FCA5C0A981E190A4528BF87C9FDAA30881CEE9EC83CC3DB93AE1B4FF529A0D0D9D42EDFDCEB46470D1046EAC5E4F32C31083C72C050F"; +// String orgData = "FFFFFFFFFFF1111111111FFFFF"; +// String userId = "1111111111111148"; +// +// byte[] encData = api.SYD_SM2_Encrypt(Util.hexString2Bytes(publicKey), orgData.getBytes()); +// System.out.println("加密后的数据: " + Util.bytes2HexString(encData)); +// +// byte[] bytes = api.decryptBySkC(1, userId, encData); +// System.out.println("decData:" + new String(bytes)); +// } +// +// // 测试通过 +// // 78 +// @Test +// public void testSM2DecryptOrder() { +// String certId = "1111111111111151"; +// String publicKey = "034200048043AF118B45629857DB693105849B2617FED249D59DFD29BE9A891ADEE7441A2D8C62020953DAEF038184E0244310CF2123C507F26F5380FFECC8D53E79B24E"; +// String orgData = "FFFFFFFFFFF1111111111FFFFF"; +// String s = api.SM2EncryptOrder(Util.hexString2Bytes(publicKey), orgData.getBytes()); +// +// System.out.println("加密后的数据: " + s); +// System.out.println("解base64格式之后: " + Util.bytes2HexString(Base64.getDecoder().decode(s))); +// byte[] pOrgData = SYMUtil.base64EnData2DerEnDataC1C2C3(s); +// System.out.println("加密后的数据解base64-2: " + Util.bytes2HexString(pOrgData)); +// +// byte[] bytes = api.SM2DecryptOrder(certId, s, SydApi.FOR_ENCRYPT); +// +// System.out.println("decData:" + new String(bytes)); +// } +// +// // QQ +// @Test +// public void testSM2GetPublicKeyC() { +// String s = api.SM2GetPublicKeyC("0000000000000001", 0); +// System.out.println("获取到的公钥: " + s); +// } +// +// // 测试通过 +// // E0 +// @Test +// public void testSYMEncryptData() { +// String sm4Key = "XF356BCBA3204F6E6F356BCBA3204F6E6"; +// +// byte[] bytes = api.SYMEncryptData(SydApi.NALG_SM4,sm4Key, "1111111111111111".getBytes()); +// System.out.println("密文:" + Util.bytes2HexString(bytes)); +// byte[] bytes1 = api.SYMDecryptData(SydApi.NALG_SM4, sm4Key, bytes); +// System.out.println(new String(bytes1)); +// } +// +// // 01100000000000000000800331433D434E2C4F3D53756E796172642C4F553D383030312C434E3D38303031000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003313131 +// +// // 测试通过 +// // 8003 +// @Test +// public void testSYD_NakedSign() { +// String dn = "C=CN,O=Sunyard,OU=8001,CN=8001"; +// byte[] bytes = api.SYD_NakedSign("111".getBytes(), dn); +// System.out.println(Util.bytes2HexString(bytes)); +// } +// +// // 测试通过 +// // 8004 +// @Test +// public void testSYD_NakedVerify() { +// String dn = "C=CN,O=Sunyard,OU=8001,CN=8001"; +// String orgData = "111"; +// byte[] bytes = api.SYD_NakedSign(orgData.getBytes(), dn); +// String sign = Util.bytes2HexString(bytes); +// System.out.println(sign); +// +// boolean b = api.SYD_NakedVerify(orgData.getBytes(), bytes, dn); +// System.out.println(b); +// } +// +// // 测试通过 +// // 8005 +// @Test +// public void testSYD_DetachedSign() { +// +// String orgData = "3214312341243214"; +// String DN = "C=CN,O=Sunyard,OU=8001,CN=8001"; +// String s = api.SYD_DetachedSign(orgData.getBytes(), DN); +// System.out.println(s); +// } +// +// // 测试通过 +// // 8006 +// @Test +// public void testSYD_DetachedVerify() { +// String orgData = "3214312341243214"; +// String DN = "C=CN,O=Sunyard,OU=8001,CN=8001"; +// String sign = api.SYD_DetachedSign(orgData.getBytes(), DN); +// System.out.println("签名结果: " + sign); +// +// boolean b = api.SYD_DetachedVerify(orgData.getBytes(), sign); +// System.out.println("验签结果:" + b); +// } +// +// // 8012 +// @Test +// public void testSYD_Get_X509_CertInfo_HA() { +// +// String orgData = "3214312341243214"; +// String DN = "C=CN,O=Sunyard,OU=8001,CN=8001"; +// String s = api.SYD_DetachedSign(orgData.getBytes(), DN); +// System.out.println(s); +// +// X509 x509 = api.SYD_Get_X509_CertInfo_HA(orgData.getBytes(), s); +// System.out.println(x509); +// } +// +// // 8012 +// @Test +// public void testSYD_Get_X509_CertInfo_HA1() { +// +// String orgData = "\n" + +// "\n" + +// " \n" + +// " \n" + +// " 20211230001190300000000032001000\n" + +// " 2021-12-30T09:27:49\n" + +// " \n" + +// " G4000131000016\n" + +// " \n" + +// " \n" + +// " C1175662000017\n" + +// " \n" + +// " \n" + +// " \n" + +// " CC00\n" + +// " CS01\n" + +// " \n" + +// " \n" + +// ""; +// +// String sign = "MIID3QYKKoEcz1UGAQQCAqCCA80wggPJAgEBMQ4wDAYIKoEcz1UBgxEFADAMBgoqgRzPVQYBBAIBoIICxDCCAsAwggJjoAMCAQICEBAAAAAAAAAAAAAAEEJYBCMwDAYIKoEcz1UBg3UFADBcMQswCQYDVQQGEwJDTjEwMC4GA1" + +// "UECgwnQ2hpbmEgRmluYW5jaWFsIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MRswGQYDVQQDDBJDRkNBIFRFU1QgU00yIE9DQTEwHhcNMjEwMTExMDk1MjI1WhcNMjIwMTExMDk1MjI1WjB2MQswCQYDVQQGEwJjbjEVMBMGA1UECgwMQ0ZDQSBURVNUIENBMQ8wDQYDVQQLDAZDQ0ZDQ0IxF" + +// "DASBgNVBAsMC0VudGVycHJpc2VzMSkwJwYDVQQDDCAwNDFAODkwNDI5MDA5OTk5RkRAQ0JDQ0AwMDAwMDAwMTBZMBMGByqGSM49AgEGCCqBHM9VAYItA0IABExU5zuJ3pVl49mS3rTBwUcPuiI/zDR/w117PkpCgJ7m0kGyyorj1h2bxM62PthpNy99KPnk9gEvS696ZE5s8LGjgeowgecw" + +// "HwYDVR0jBBgwFoAUa/4Y2o9COqa4bbMuiIM6NKLBMOEwSAYDVR0gBEEwPzA9BghggRyG7yoBATAxMC8GCCsGAQUFBwIBFiNodHRwOi8vd3d3LmNmY2EuY29tLmNuL3VzL3VzLTE0Lmh0bTA5BgNVHR8EMjAwMC6gLKAqhihodHRwOi8vdWNybC5jZmNhLmNvbS5jbi9TTTIvY3JsMTY4NzY" + +// "uY3JsMAsGA1UdDwQEAwID6DAdBgNVHQ4EFgQUypxjmN7VBcoruhBRWmmFNv9yG1IwEwYDVR0lBAwwCgYIKwYBBQUHAwIwDAYIKoEcz1UBg3UFAANJADBGAiEA1IQTRQf5aaDJzzVxWLRml1ZSqQd9FPFeKZJnbzGQIQMCIQD/gY5+H1nytcVAx8hGtUPssklmI+9+vTdOF5LaKMR+jzGB3T" + +// "CB2gIBATBwMFwxCzAJBgNVBAYTAkNOMTAwLgYDVQQKDCdDaGluYSBGaW5hbmNpYWwgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxGzAZBgNVBAMMEkNGQ0EgVEVTVCBTTTIgT0NBMQIQEAAAAAAAAAAAAAAQQlgEIzAMBggqgRzPVQGDEQUAMA0GCSqBHM9VAYItAQUABEYwRAIgXmjY/FIR8" + +// "qudmZGsIQUivZDt3/73dGojVjj5L76OcJICIAHu0G242uYPY2B8zMkGw7kQ1C1xgRipEmlC1GWwMCz0"; +// +// +// +// X509 x509 = api.SYD_Get_X509_CertInfo_HA(orgData.getBytes(), sign); +// System.out.println(Util.bytes2HexString(x509.getPubKey())); +// } +// +// // 测试通过 +// // 8016 +// @Test +// public void testGetX509CertInfo() { +// +//// String pCert = "-----BEGIN CERTIFICATE-----\u0007MIIC1jCCAnqgAwIBAgIFQAKAAXQwDAYIKoEcz1UBg3UFADBhMQswCQYDVQQGEwJD\u0007TjEwMC4GA1UECgwnQ2hpbmEgRmluYW5jaWFsIENlcnRpZmljYXRpb24gQXV0aG9y\u0007aXR5MSAwHgYDVQQDDBdDRkNBIEFDUyBURVNUIFNNMiBPQ0EzMTAeFw0xNzExMTYw\u0007NjU0NDVaFw0yMjExMTYwNjU0NDVaMIGDMQswCQYDVQQGEwJDTjEcMBoGA1UECgwT\u0007Q0ZDQSBURVNUIFNNMiBPQ0EzMTEOMAwGA1UECwwFU0hDUEUxGTAXBgNVBAsMEE9y\u0007Z2FuaXphdGlvbmFsLTExKzApBgNVBAMMIjA1MUDkuIrmtbfnpajmja7kuqTmmJPm\u0007iYBAQUFBQUFBQDgwWTATBgcqhkjOPQIBBggqgRzPVQGCLQNCAARg8D1RBEv9lpOE\u0007Q3SdzdLCQ4fDiE8Ncb2Fl4qIGc12GA/LUS1fgzLZuk0WlgyZDSe+QlQziqkmsXsx\u0007KoTCzqsto4H5MIH2MD8GCCsGAQUFBwEBBDMwMTAvBggrBgEFBQcwAYYjaHR0cDov\u0007L29jc3B0ZXN0LmNmY2EuY29tLmNuOjgwL29jc3AwHwYDVR0jBBgwFoAUBMe8+VkB\u0007aT6MNDYgYhg83ry1uwwwDAYDVR0TAQH/BAIwADA2BgNVHR8ELzAtMCugKaAnhiVo\u0007dHRwOi8vMjEwLjc0LjQyLjMvT0NBMzEvU00yL2NybDEuY3JsMA4GA1UdDwEB/wQE\u0007AwIGwDAdBgNVHQ4EFgQUomdLtdhENYb16pe1LNRlcr4N7b8wHQYDVR0lBBYwFAYI\u0007KwYBBQUHAwIGCCsGAQUFBwMEMAwGCCqBHM9VAYN1BQADSAAwRQIgZpJGhpRKmgfi\u0007Vbdq3UAGW6I3AUMfbWMd6webLQXmCOoCIQDSxTKRb0TfoXepD3VgO9qxCDwSc4yn\u0007WJ2GC3qmr81QBg==\u0007-----END CERTIFICATE-----\u0007"; +//// X509 x509 = api.GetX509CertInfo(pCert); +// +//// String path = "E:\\work\\sunyard\\证书\\sm2.q\\sm2.q.enc.crt.pem"; +// +// String pCert = "-----BEGIN CERTIFICATE-----\\r\\nMIIC0DCCAnSgAwIBAgIFEEBzAUEwDAYIKoEcz1UBg3UFADBcMQswCQYDVQQGEwJD\\r\\nTjEwMC4GA1UECgwnQ2hpbmEgRmluYW5jaWFsIENlcnRpZmljYXRpb24gQXV0aG9y\\r\\naXR5MRswGQYDVQQDDBJDRkNBIFRFU1QgU00yIE9DQTEwHhcNMjAxMTAzMDk1NTU4\\r\\nWhcNMjUxMTAzMDk1NTU4WjB1MQswCQYDVQQGEwJDTjEQMA4GA1UECgwHT0NBMVNN\\r\\nMjENMAsGA1UECwwEdGVzdDEZMBcGA1UECwwQT3JnYW5pemF0aW9uYWwtMjEqMCgG\\r\\nA1UEAwwhMDUxQGNoaW5hdW5pb25wYXlAWjkwNTI5MDAwMDAwOEAyMFkwEwYHKoZI\\r\\nzj0CAQYIKoEcz1UBgi0DQgAEkw27RvY8mAx6h7vnSW/+X3b++a1E6LzQTPWMOiKP\\r\\nAfZTqJMKeRnQNEKt+N7EA98YHVheOCT9TlZ3fkgtNZcH86OCAQYwggECMB8GA1Ud\\r\\nIwQYMBaAFGv+GNqPQjqmuG2zLoiDOjSiwTDhMAwGA1UdEwEB/wQCMAAwSAYDVR0g\\r\\nBEEwPzA9BghggRyG7yoBATAxMC8GCCsGAQUFBwIBFiNodHRwOi8vd3d3LmNmY2Eu\\r\\nY29tLmNuL3VzL3VzLTE0Lmh0bTA5BgNVHR8EMjAwMC6gLKAqhihodHRwOi8vdWNy\\r\\nbC5jZmNhLmNvbS5jbi9TTTIvY3JsMTM3MzYuY3JsMA4GA1UdDwEB/wQEAwIGwDAd\\r\\nBgNVHQ4EFgQUn9wz++O90r2Bc7qlzqeIhIVivD4wHQYDVR0lBBYwFAYIKwYBBQUH\\r\\nAwIGCCsGAQUFBwMEMAwGCCqBHM9VAYN1BQADSAAwRQIgNXTJts3vqvCbbhUKwnkI\\r\\nrv+HeDeyTwU4JJpBTWCR6TACIQCtQShpYt9jgxw6VSHpKEXnnWH9u4vYhXDoH42w\\r\\nWVaX6A==\\r\\n-----END CERTIFICATE-----"; +// +// String pCert1 = "MIID3QYKKoEcz1UGAQQCAqCCA80wggPJAgEBMQ4wDAYIKoEcz1UBgxEFADAMBgoqgRzPVQYBBAIBoIICxDCCAsAwggJjoAMCAQICEBAAAAAAAAAAAAAAEEJYBCMwDAYIKoEcz1UBg3UFADBcMQswCQYDVQQGEwJDTjEwMC4GA1" + +// "UECgwnQ2hpbmEgRmluYW5jaWFsIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MRswGQYDVQQDDBJDRkNBIFRFU1QgU00yIE9DQTEwHhcNMjEwMTExMDk1MjI1WhcNMjIwMTExMDk1MjI1WjB2MQswCQYDVQQGEwJjbjEVMBMGA1UECgwMQ0ZDQSBURVNUIENBMQ8wDQYDVQQLDAZDQ0ZDQ0IxF" + +// "DASBgNVBAsMC0VudGVycHJpc2VzMSkwJwYDVQQDDCAwNDFAODkwNDI5MDA5OTk5RkRAQ0JDQ0AwMDAwMDAwMTBZMBMGByqGSM49AgEGCCqBHM9VAYItA0IABExU5zuJ3pVl49mS3rTBwUcPuiI/zDR/w117PkpCgJ7m0kGyyorj1h2bxM62PthpNy99KPnk9gEvS696ZE5s8LGjgeowgecw" + +// "HwYDVR0jBBgwFoAUa/4Y2o9COqa4bbMuiIM6NKLBMOEwSAYDVR0gBEEwPzA9BghggRyG7yoBATAxMC8GCCsGAQUFBwIBFiNodHRwOi8vd3d3LmNmY2EuY29tLmNuL3VzL3VzLTE0Lmh0bTA5BgNVHR8EMjAwMC6gLKAqhihodHRwOi8vdWNybC5jZmNhLmNvbS5jbi9TTTIvY3JsMTY4NzY" + +// "uY3JsMAsGA1UdDwQEAwID6DAdBgNVHQ4EFgQUypxjmN7VBcoruhBRWmmFNv9yG1IwEwYDVR0lBAwwCgYIKwYBBQUHAwIwDAYIKoEcz1UBg3UFAANJADBGAiEA1IQTRQf5aaDJzzVxWLRml1ZSqQd9FPFeKZJnbzGQIQMCIQD/gY5+H1nytcVAx8hGtUPssklmI+9+vTdOF5LaKMR+jzGB3T" + +// "CB2gIBATBwMFwxCzAJBgNVBAYTAkNOMTAwLgYDVQQKDCdDaGluYSBGaW5hbmNpYWwgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxGzAZBgNVBAMMEkNGQ0EgVEVTVCBTTTIgT0NBMQIQEAAAAAAAAAAAAAAQQlgEIzAMBggqgRzPVQGDEQUAMA0GCSqBHM9VAYItAQUABEYwRAIgXmjY/FIR8" + +// "qudmZGsIQUivZDt3/73dGojVjj5L76OcJICIAHu0G242uYPY2B8zMkGw7kQ1C1xgRipEmlC1GWwMCz0"; +// +// String pCert2 = "MIIDATCCAqWgAwIBAgIUKGNCcRdvF5KJOxRb401NHRTCSogwDAYIKoEcz1UBg3UFADCBjTFHMEUGA1UEAww+U2hlbiBaaGVuIGlUcnVzQ2hpbmEgQ2xhc3MgRW50ZXJwcmlzZSBTdWJzY3JpYmVyIENBIFNNMiAtIFRlc3QxGDAWBgNVBAsMD+a1i+ivlemDqOivleeUqDEbMBkGA1UECgwS5aSp6K+a5a6J5L+h6K+V55SoMQswCQYDVQQGEwJDTjAeFw0yMjAyMTUwMzA1MzVaFw0yMzAyMTUwMzA1MzVaMIGNMTAwLgYDVQQGDCfkv6Hpm4Xovr7ns7vnu5/lt6XnqIvogqHku73mnInpmZDlhazlj7gxMDAuBgNVBAoMJ+S/oembhei+vuezu+e7n+W3peeoi+iCoeS7veaciemZkOWFrOWPuDEVMBMGA1UECwwM5rWL6K+V6YOo6ZeoMRAwDgYDVQQDDAdzdW55YXJkMFkwEwYHKoZIzj0CAQYIKoEcz1UBgi0DQgAEcKKvHjHE9Y2exfJfYZOeWffq2A5k6RRUbBhMsjCKK3eciz1WkDGIdjAgW/VI++MMITimKMXq0bwnnmo2PTNvfqOB3jCB2zAJBgNVHRMEAjAAMAsGA1UdDwQEAwIFIDBqBgNVHR8EYzBhMF+gXaBbhllodHRwOi8vc3p0b3BjYS5zeml0cnVzLmNvbS5jbi9wdWJsaWMvaXRydXNjcmw/Q0E9NzMzNUExQUYzNzRBMUU4QjQwM0FCMUFDMkQwNjVDQUU3NUNBQjIzNjAfBgNVHSMEGDAWgBQrRjpP0Z4sztQfhsLWPZq/Jyhk9zAdBgNVHQ4EFgQUG6xZRL5VQ+DonJX4crqkUphJIA4wFQYHYIEcAQYKAgQKDAhJVFJVU0tNQzAMBggqgRzPVQGDdQUAA0gAMEUCIQCdLHm9pjihzyR9A5uXrTo4UC+Rpcm5vPGh4Do58bqRKgIgLpryVWqLVb8GqL91KdmXd7E7RrG7DjqiworD9TEmnLY="; +// String s = CoderUtil.certAddHT(pCert2); +// System.out.println(s); +// X509 x509 = api.GetX509CertInfo(s); +// System.out.println("公钥" + Util.bytes2HexString(x509.getPubKey())); +// System.out.println("sn:" + x509.getSerialNumber()); +// System.out.println("dn:" + x509.getSubject()); +// System.out.println("getCert:" + x509.getCert()); +// System.out.println("getIssuer:" + x509.getIssuer()); +// System.out.println("getNotAfter:" + x509.getNotAfter()); +// System.out.println("getNotBefore:" + x509.getNotBefore()); +// } +// +// +// @Test +// public void testGetX509CertInfo2() { +// +// String pCert = "-----BEGIN CERTIFICATE-----\\r\\nMIIC0DCCAnSgAwIBAgIFEEBzAUEwDAYIKoEcz1UBg3UFADBcMQswCQYDVQQGEwJD\\r\\nTjEwMC4GA1UECgwnQ2hpbmEgRmluYW5jaWFsIENlcnRpZmljYXRpb24gQXV0aG9y\\r\\naXR5MRswGQYDVQQDDBJDRkNBIFRFU1QgU00yIE9DQTEwHhcNMjAxMTAzMDk1NTU4\\r\\nWhcNMjUxMTAzMDk1NTU4WjB1MQswCQYDVQQGEwJDTjEQMA4GA1UECgwHT0NBMVNN\\r\\nMjENMAsGA1UECwwEdGVzdDEZMBcGA1UECwwQT3JnYW5pemF0aW9uYWwtMjEqMCgG\\r\\nA1UEAwwhMDUxQGNoaW5hdW5pb25wYXlAWjkwNTI5MDAwMDAwOEAyMFkwEwYHKoZI\\r\\nzj0CAQYIKoEcz1UBgi0DQgAEkw27RvY8mAx6h7vnSW/+X3b++a1E6LzQTPWMOiKP\\r\\nAfZTqJMKeRnQNEKt+N7EA98YHVheOCT9TlZ3fkgtNZcH86OCAQYwggECMB8GA1Ud\\r\\nIwQYMBaAFGv+GNqPQjqmuG2zLoiDOjSiwTDhMAwGA1UdEwEB/wQCMAAwSAYDVR0g\\r\\nBEEwPzA9BghggRyG7yoBATAxMC8GCCsGAQUFBwIBFiNodHRwOi8vd3d3LmNmY2Eu\\r\\nY29tLmNuL3VzL3VzLTE0Lmh0bTA5BgNVHR8EMjAwMC6gLKAqhihodHRwOi8vdWNy\\r\\nbC5jZmNhLmNvbS5jbi9TTTIvY3JsMTM3MzYuY3JsMA4GA1UdDwEB/wQEAwIGwDAd\\r\\nBgNVHQ4EFgQUn9wz++O90r2Bc7qlzqeIhIVivD4wHQYDVR0lBBYwFAYIKwYBBQUH\\r\\nAwIGCCsGAQUFBwMEMAwGCCqBHM9VAYN1BQADSAAwRQIgNXTJts3vqvCbbhUKwnkI\\r\\nrv+HeDeyTwU4JJpBTWCR6TACIQCtQShpYt9jgxw6VSHpKEXnnWH9u4vYhXDoH42w\\r\\nWVaX6A==\\r\\n-----END CERTIFICATE-----"; +// +// String pCert2 = "-----BEGIN CERTIFICATE-----\n" + +// "MIIDUjCCAjoCCQDEXN6JVLqjQzANBgkqhkiG9w0BAQsFADBrMQswCQYDVQQGEwJj\n" + +// "bjELMAkGA1UECAwCemoxCzAJBgNVBAcMAmh6MQwwCgYDVQQKDAN4eWQxDTALBgNV\n" + +// "BAsMBGFxeXkxCzAJBgNVBAMMAnpiMRgwFgYJKoZIhvcNAQkBFgkyMkBxcS5jb20w\n" + +// "HhcNMjExMTE5MDc1NDM1WhcNMjExMjE5MDc1NDM1WjBrMQswCQYDVQQGEwJjbjEL\n" + +// "MAkGA1UECAwCemoxCzAJBgNVBAcMAmh6MQwwCgYDVQQKDAN4eWQxDTALBgNVBAsM\n" + +// "BGFxeXkxCzAJBgNVBAMMAnpiMRgwFgYJKoZIhvcNAQkBFgkyMkBxcS5jb20wggEi\n" + +// "MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCrOL1rh39AzMJYD6bPmumW0aUi\n" + +// "JW1U9SgGYF4FBFoN7DnfgSe9dDg6FIiT81kfqz+ydeACsFCkfdjXhsrI/SEvtkK6\n" + +// "/Y3PMzMys01xKFoZywaOf4s9jSQXhDQxs82HgPkHAVGmIOdIzGV0MGaPyGKaUyLQ\n" + +// "s3bYBO656rLFEuNGM6Hr0r6PtEEBvBoveK3CcYVZL9KzeOEQAXJlYMD1T7xetgZu\n" + +// "obl/cbC2fmNA4xRqNA+qxherzF91zC2G0WMYdPubGkAaXFfiVUwuazCpQ60AECIy\n" + +// "sYnR2m8+hbCEujTYrd2Na+a0e4T/HSzsN5lZ5dl8UMJ7pMsc/hH176fy+39LAgMB\n" + +// "AAEwDQYJKoZIhvcNAQELBQADggEBACNyTOW6Glb6/jWBLJRmob09b/DA0xGSyRAM\n" + +// "Qwij6ch1GInO3LKfkIiuty8EGHADRraZk6igUAthAMPInPy6P+CNvGx5U3qRk0nT\n" + +// "hChQ23AkkBpzvr+7LmLFid3mmgnGwPUBJtor6ylCZbG2lIpUBrWQhHqRqWYiv3N1\n" + +// "nnOQRe1pWdk/Jw3m7mlXO1xKb0XeFQ8bLZG15b6qgkWeyTnGju5+NPMNV3U3w9WE\n" + +// "tHW9v9xxFj/++3+U0pMaYwhKz8PA7qVfiPiEIsU1SAiQRPwUUODZG+YYAz2lSOHS\n" + +// "TN36nYmVbVuWMguNPKKXY2b2mosnU6t0xtXWHxMhVCF4Slity9s=\n" + +// "-----END CERTIFICATE-----"; +// +// X509 x509 = api.GetX509CertInfo(pCert2); +// System.out.println(Util.bytes2HexString(x509.getPubKey())); +// } +// +// // 测试通过 +// // 8017 +// @Test +// public void testGetX509CertFileC() { +// String userId = "8012"; +// String userId2 = "8001"; +// +// String s = api.GetX509CertFileC(userId2, 0); +// System.out.println(s); +// +// X509 x509 = api.GetX509CertInfo(s); +// System.out.println("颁发者DN为: " + x509.getIssuer()); +// System.out.println("证书主题: " + x509.getSubject()); +// } +// +// // 8017 +// @Test +// public void testGetX509CertFileBySN() { +// String sn = "1004282452"; +// String sn2 = "3C93000000000025"; +// +// String s = api.GetX509CertFileBySN(sn2, 0); +// System.out.println(s); +// X509 x509 = api.GetX509CertInfo(s); +// System.out.println("证书序列号: " + x509.getSerialNumber()); +// System.out.println("证书主题DN: " + x509.getSubject()); +// } +// +// // 测试通过 +// // 8005 +// @Test +// public void testDetachedSign() { +// String publicKey = "034200043EDA3A107B7CC35CC005C7FBF0BB4E6B43A07EE14E360603D22ECA2A600B2D0FA03055D400D1240300F54648B849D13F50B330FF14351B5645B13686820A65BB"; +// String orgData = "0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101"; +// String testCertNo = "C=CN,O=Sunyard,OU=8001,CN=8001"; +// +// byte[] hash = api.SM3Hash(publicKey, Util.hexString2Bytes(orgData)); +// System.out.println("hash:" + hash); +// +// String sign = api.detachedSign( +// SydApi.DATA_HASH, +// hash, +// testCertNo +// ); +// +// System.out.println("\t签名结果: " + sign); +// +// boolean verify = api.detachedVerify( +// SydApi.DATA_HASH, +// hash, +// sign +// ); +// +// System.out.println("\t验签结果: " + verify); +// } +// +// // 测试通过 +// // 8005 +// @Test +// public void testSm3AndDetachedSign() { +// String publicKey = "0342000469DE3847DD6A66DA96DB8F2DCFA32E10E680FF2EF4A592079E7C3A44320BB15084E7CA9782A39B6E28F07C04FE00D68958A2605921E71712D56C1E4435A39FA5"; +// String orgData = "FFFFFFFFFFFFFFFF"; +// String testCertNo = "C=CN,O=Sunyard,OU=8001,CN=8001"; +// +// String sign = api.sm3AndDetachedSign(orgData.getBytes(), publicKey, testCertNo); +// System.out.println("签名结果: " + sign); +// +// boolean b = api.sm3AndDetachedVerify(orgData.getBytes(), publicKey, sign); +// System.out.println("验签结果:" + b); +// } +// +// // 测试通过 +// // 8005 +// @Test +// public void testSm3WithoutPKDetachedSign() { +// String orgData = "FFFFFFFFFFFFFFFF"; +// String testCertNo = "C=CN,O=Sunyard,OU=8001,CN=8001"; +// +// String sign = api.sm3WithoutPKDetachedSign(orgData.getBytes(), testCertNo); +// System.out.println("签名结果: " + sign); +// +// boolean b = api.sm3WithoutPKDetachedVerify(orgData.getBytes(), sign); +// System.out.println("验签结果:" + b); +// } +// +// // 8026 +// @Test +// public void testDetachedSignbysn() { +// //X509 证书的序列号 +// String pCertSerial = "1004282452"; +// //数据明文 +// byte[] data2 = "asfkahfkahfkafadfhdaghfashadfaflsaldfasf".substring(0,32).getBytes(); +// +// //签名 +// String bs = api.detachedSignbysn(0,data2,pCertSerial); +// System.out.println(bs); +// } +// +// // 测试通过 +// // 4D41 +// @Test +// public void testGenerateMIYA() { +// byte[] testData = "1234567812345678".getBytes(); +// String mac = api.GenerateMIYA("123456", 1, SydApi.NALG_3DES, testData); +// System.out.println("MAC = " + mac); +// } +// +// // 测试通过 +// // 4D43 +// @Test +// public void testVerifyMIYA() { +// +// // 000000000012345600300000001 +// byte[] testData = "1234567812345678".getBytes(); +// String mac = api.GenerateMIYA("123456", 1, SydApi.NALG_3DES, testData); +// System.out.println("MAC = " + mac); +// Boolean ret = api.VerifyMIYA( "123456", 1, SydApi.NALG_3DES, mac, testData); +// if ( ret ){ +// System.out.println("核押通过"); +// } else { +// System.out.println("核押不通过"); +// } +// } +// +// // 测试通过 +// // QN +// @Test +// public void testSYD_SM2GenKeyPair() { +// RetWrap retWrap = api.SYD_SM2GenKeyPair(); +// printRetWrap(retWrap); +// } +// +// // 测试通过 +// // Q1 +// @Test +// public void testEncrypt_Data() { +// byte[] bytes = api.Encrypt_Data(2, 1, 0, "XK123456212145212200A00000001", "1111111111111111".getBytes(), "122345678".getBytes()); +// System.out.println(Util.bytes2HexString(bytes)); +// } +// +// // 测试通过 +// // Q2 +// @Test +// public void testDecrypt_Data() { +// String dek = "XK123456212145212200A00000001"; +// String infoData = "1111111111111111"; +// String vector = "122345678"; +// +// +// byte[] bytes = api.Encrypt_Data(2, 1, 0, dek, infoData.getBytes(), vector.getBytes()); +// System.out.println(Util.bytes2HexString(bytes)); +// +// byte[] bytes1 = api.Decrypt_Data(2, 1, 0, dek, bytes, vector.getBytes()); +// System.out.println(Util.bytes2HexString(bytes1)); +// } +// +// +// // YA +// @Test +// public void testSYD_Disperse() throws UnsupportedEncodingException { +// //加解密密钥 +// String key1 = "123123555555555500000000001"; +// //原始数据 +// byte[] data = "cdb1af4bb0ab6de6".getBytes("UTF-8"); +// +// //分散因子 +// String data3 = "0000000000002456aece4be200050001"; +// +// String s = api.SYD_Disperse(key1, 0, 1, data3.getBytes(), 2, 0); +// +// } +// +// // 测试通过 +// // PA +// @Test +// public void testSetPrintFormat() throws UnsupportedEncodingException { +// api.setPrintFormat(new String(">L>003^0>033^4>L>003^1>023^P>033^5>053^Q>L>003^2>033^6>003^3>033^7>L>003THANK YOU>033>THANK YOU 中文>L>F".getBytes("UTF-8") , "GB2312")); +// +// } +// +// // QX +// @Test +// public void testSM2GetPublicKeyC_QX() { +// String s = api.SM2GetPublicKeyC_QX(3, 0); +// System.out.println(s); +// } +// +// // 011E3030303030303030 +// // 3930 +// // 31313131313131313131313131313131 +// // 32323232323232323232323232323232 +// // 30303332 +// // F9CC9E2B67C61043B87552E61F9F50120902EA5462FC65A29695FC8F5E0FF7AF +// // 30303638 +// // 03420004CAFC8EC6782D9DE8F834B7D47B9D9057A0F21DAB402694EC580723879CC221A1730977F0DE947A0D5390858EE1FD827A3BE2F07E5671131BF3BE1868D3333029 +// // 30303638 +// // 0342000424A686E34777690C732D2C04F707DAE37AAA346461AACFABDF00982D84BB27B9DEB717FCEF55BA7C288FC935C637FD0681028E69584BFDA7A38BDB4557E1551C +// // 0FBE0F3D6BAB184A20A235BA8DF2494C8FFC0826F60C22D3E4D89776CBD203E03707D2D530232EFE8600282A6EF171816E83AFA20A7991BBF2AD30DC59C71E76 +// +// // 设备型号 +// private String equipType = "1111111111111111"; +// // 设备序号 +// private String equipNo = "2222222222222222"; +// // 设备密钥私钥 +// private String equipSk = "F9CC9E2B67C61043B87552E61F9F50120902EA5462FC65A29695FC8F5E0FF7AF"; +// // 设备密钥公钥 +// private String equipPk = "03420004CAFC8EC6782D9DE8F834B7D47B9D9057A0F21DAB402694EC580723879CC221A1730977F0DE947A0D5390858EE1FD827A3BE2F07E5671131BF3BE1868D3333029"; +// // 厂商公钥 +// private String manuPk = "0342000424A686E34777690C732D2C04F707DAE37AAA346461AACFABDF00982D84BB27B9DEB717FCEF55BA7C288FC935C637FD0681028E69584BFDA7A38BDB4557E1551C"; +// // 授权签名 +// private String authSign = "0FBE0F3D6BAB184A20A235BA8DF2494C8FFC0826F60C22D3E4D89776CBD203E03707D2D530232EFE8600282A6EF171816E83AFA20A7991BBF2AD30DC59C71E76"; +// +// // 测试通过 +// // 90 +// @Test +// public void testSetDevCert() { +// +// boolean b = api.setDevCert(equipType, equipNo, Util.hexString2Bytes(equipSk), Util.hexString2Bytes(equipPk), +// Util.hexString2Bytes(manuPk), Util.hexString2Bytes(authSign)); +// System.out.println(b); +// } +// +// // 00B63030303030303030 +// // 3931 +// // 30303332 +// // F9CC9E2B67C61043B87552E61F9F50120902EA5462FC65A29695FC8F5E0FF7AF +// // 30303638 +// // 03420004CAFC8EC6782D9DE8F834B7D47B9D9057A0F21DAB402694EC580723879CC221A1730977F0DE947A0D5390858EE1FD827A3BE2F07E5671131BF3BE1868D3333029 +// // 0FBE0F3D6BAB184A20A235BA8DF2494C8FFC0826F60C22D3E4D89776CBD203E03707D2D530232EFE8600282A6EF171816E83AFA20A7991BBF2AD30DC59C71E76 +// +// // 测试通过 +// // 91 +// @Test +// public void testChangeDevCert() { +// boolean b = api.changeDevCert(Util.hexString2Bytes(equipSk), Util.hexString2Bytes(equipPk), Util.hexString2Bytes(authSign)); +// System.out.println(b); +// } +// +// // 测试通过 +// // 92 +// @Test +// public void testGetDeviceCertiInfo() { +// RetWrap deviceCertiInfo = api.getDeviceCertiInfo(); +// printRetWrap(deviceCertiInfo, true); +// } +// +// // 测试通过 +// // 97 +// @Test +// public void testDeviceSignC() { +// String hash = "11111111111111111111111111111111"; +// String s = api.deviceSignC(hash.getBytes()); +// System.out.println(s); +// } +// +// // 测试通过 +// // 8018 +// @Test +// public void testAttachedSignAndVerify() { +// String dn = "C=CN,O=Sunyard,OU=8001,CN=8001"; +// String orgData = "111111213323143243243"; +// String sign = api.attachedSign(orgData.getBytes(), dn); +// System.out.println("签名结果: " + sign); +// +//// String sign = "MIICsgYKKoEcz1UGAQQCAqCCAqIwggKeAgEBMQwwCgYIKoEcz1UBgxEwIAYKKoEcz1UGAQQCAaASBBAzMjE0MzEyMzQxMjQzMjE0oIIByTCCAcUwggFooAMCAQICCDyTAAAAAAAlMAwGCCqBHM9VAYN1BQAwJjELMAkGA1UEBhMCQ04xFzAVBgNVBAMMDlN1bnlhcmRTTTJSb290MB4XDTE3MDUxNzAyNTI0NFoXDTIyMDcyNTAyNTI0NFowPTELMAkGA1UEBhMCQ04xEDAOBgNVBAoMB1N1bnlhcmQxDTALBgNVBAsMBDgwMDExDTALBgNVBAMMBDgwMDEwWTATBgcqhkjOPQIBBggqgRzPVQGCLQNCAAQ+2joQe3zDXMAFx/vwu05rQ6B+4U42BgPSLsoqYAstD6AwVdQA0SQDAPVGSLhJ0T9QszD/FDUbVkWxNoaCCmW7o2cwZTAOBgNVHQ8BAf8EBAMCAMAwEwYDVR0lBAwwCgYIKwYBBQUHAwEwHwYDVR0jBBgwFoAU93/arv8hxtk6eq2g+6z+AqVO1cEwHQYDVR0OBBYEFAMWZaY2AwaQTNiFLpsa0dyCzBZ6MAwGCCqBHM9VAYN1BQADSQAwRgIhAIl2ZHGfln5hedcousARzZ2yeUjUbxSFMmhMmr5t6Q6nAiEAvqYX/KpIcvnPyB/Yiil+oq6DFdVM6P3vDxBhU/8taXExgZswgZgCAQEwMjAmMQswCQYDVQQGEwJDTjEXMBUGA1UEAwwOU3VueWFyZFNNMlJvb3QCCDyTAAAAAAAlMAoGCCqBHM9VAYMRMAsGCSqBHM9VAYItAQRGMEQCIEons2hit2967ciJo3QipM4lJgd1K3QmwOp9O/n8Tl86AiB9V6Z7jQogZFtoIz6kwAI6OQVnjbtJlmO31bZxgYRwKg=="; +// boolean verify = api.attachedVerify(sign); +// System.out.println("验签结果: " + verify); +// } +// +// // 测试通过 +// // 8018 +// @Test +// public void testAttachedSignAndVerifyRD() { +// String dn = "C=CN,O=Sunyard,OU=8001,CN=8001"; +// String orgData = "111111213323143243243"; +// String sign = api.attachedSign(orgData.getBytes(), dn); +// System.out.println("签名结果: " + sign); +// +//// String sign = "MIICsgYKKoEcz1UGAQQCAqCCAqIwggKeAgEBMQwwCgYIKoEcz1UBgxEwIAYKKoEcz1UGAQQCAaASBBAzMjE0MzEyMzQxMjQzMjE0oIIByTCCAcUwggFooAMCAQICCDyTAAAAAAAlMAwGCCqBHM9VAYN1BQAwJjELMAkGA1UEBhMCQ04xFzAVBgNVBAMMDlN1bnlhcmRTTTJSb290MB4XDTE3MDUxNzAyNTI0NFoXDTIyMDcyNTAyNTI0NFowPTELMAkGA1UEBhMCQ04xEDAOBgNVBAoMB1N1bnlhcmQxDTALBgNVBAsMBDgwMDExDTALBgNVBAMMBDgwMDEwWTATBgcqhkjOPQIBBggqgRzPVQGCLQNCAAQ+2joQe3zDXMAFx/vwu05rQ6B+4U42BgPSLsoqYAstD6AwVdQA0SQDAPVGSLhJ0T9QszD/FDUbVkWxNoaCCmW7o2cwZTAOBgNVHQ8BAf8EBAMCAMAwEwYDVR0lBAwwCgYIKwYBBQUHAwEwHwYDVR0jBBgwFoAU93/arv8hxtk6eq2g+6z+AqVO1cEwHQYDVR0OBBYEFAMWZaY2AwaQTNiFLpsa0dyCzBZ6MAwGCCqBHM9VAYN1BQADSQAwRgIhAIl2ZHGfln5hedcousARzZ2yeUjUbxSFMmhMmr5t6Q6nAiEAvqYX/KpIcvnPyB/Yiil+oq6DFdVM6P3vDxBhU/8taXExgZswgZgCAQEwMjAmMQswCQYDVQQGEwJDTjEXMBUGA1UEAwwOU3VueWFyZFNNMlJvb3QCCDyTAAAAAAAlMAoGCCqBHM9VAYMRMAsGCSqBHM9VAYItAQRGMEQCIEons2hit2967ciJo3QipM4lJgd1K3QmwOp9O/n8Tl86AiB9V6Z7jQogZFtoIz6kwAI6OQVnjbtJlmO31bZxgYRwKg=="; +// String verify = api.attachedVerifyRD(sign); +// System.out.println("验签结果: " + verify); +// } +// +// // 测试通过 +// // 8018 +// @Test +// public void testAttachedSignAndVerifyGetX509() { +// String dn = "C=CN,O=Sunyard,OU=8001,CN=8001"; +// String orgData = "111111213323143243243"; +// String sign = api.attachedSign(orgData.getBytes(), dn); +// System.out.println("签名结果: " + sign); +// +//// String sign = "MIICsgYKKoEcz1UGAQQCAqCCAqIwggKeAgEBMQwwCgYIKoEcz1UBgxEwIAYKKoEcz1UGAQQCAaASBBAzMjE0MzEyMzQxMjQzMjE0oIIByTCCAcUwggFooAMCAQICCDyTAAAAAAAlMAwGCCqBHM9VAYN1BQAwJjELMAkGA1UEBhMCQ04xFzAVBgNVBAMMDlN1bnlhcmRTTTJSb290MB4XDTE3MDUxNzAyNTI0NFoXDTIyMDcyNTAyNTI0NFowPTELMAkGA1UEBhMCQ04xEDAOBgNVBAoMB1N1bnlhcmQxDTALBgNVBAsMBDgwMDExDTALBgNVBAMMBDgwMDEwWTATBgcqhkjOPQIBBggqgRzPVQGCLQNCAAQ+2joQe3zDXMAFx/vwu05rQ6B+4U42BgPSLsoqYAstD6AwVdQA0SQDAPVGSLhJ0T9QszD/FDUbVkWxNoaCCmW7o2cwZTAOBgNVHQ8BAf8EBAMCAMAwEwYDVR0lBAwwCgYIKwYBBQUHAwEwHwYDVR0jBBgwFoAU93/arv8hxtk6eq2g+6z+AqVO1cEwHQYDVR0OBBYEFAMWZaY2AwaQTNiFLpsa0dyCzBZ6MAwGCCqBHM9VAYN1BQADSQAwRgIhAIl2ZHGfln5hedcousARzZ2yeUjUbxSFMmhMmr5t6Q6nAiEAvqYX/KpIcvnPyB/Yiil+oq6DFdVM6P3vDxBhU/8taXExgZswgZgCAQEwMjAmMQswCQYDVQQGEwJDTjEXMBUGA1UEAwwOU3VueWFyZFNNMlJvb3QCCDyTAAAAAAAlMAoGCCqBHM9VAYMRMAsGCSqBHM9VAYItAQRGMEQCIEons2hit2967ciJo3QipM4lJgd1K3QmwOp9O/n8Tl86AiB9V6Z7jQogZFtoIz6kwAI6OQVnjbtJlmO31bZxgYRwKg=="; +// X509 verify = api.attachedVerifyAndGetX509(sign); +// System.out.println("验签结果: " + verify); +// } +// +// // 测试通过 +// // 8018 +// @Test +// public void testAttachedSignAndVerifyGetAll() { +// String dn = "C=CN,O=Sunyard,OU=8001,CN=8001"; +// String orgData = "111111213323143243243"; +// String sign = api.attachedSign(orgData.getBytes(), dn); +// System.out.println("签名结果: " + sign); +// +// RetWrap verify = api.attachedVerifyAndGetAll(sign); +// if (verify != null) { +// System.out.println("x509公钥: " + Util.bytes2HexString(((X509)verify.get("x509")).getPubKey())); +// System.out.println("签名原数据: " + verify.get("oData")); +// } +// } +// +// // 00883030303030303030 +// // 3938 +// // 30313232 +// // 3078022017665B26FD20D2BE19CBCF275C43D7ECF95BBEEC2C2D1A79DF5068629D6FDDB302204A76974ADD337B5F3EAA0191AF6C7ADEE6BA86B30B828B7B32948B8DB0FF3E1A04204E4A371B154D42CC2536033F8EE8854FE0EF4BC79CB78A7CEA0C335147C7DF5B0410CF8690DC1D9ECD1951E86B6AE26A94DB +// +// // 00880000000000000000 +// // 3938 +// // 30313232 +// // 3078022017665B26FD20D2BE19CBCF275C43D7ECF95BBEEC2C2D1A79DF5068629D6FDDB302204A76974ADD337B5F3EAA0191AF6C7ADEE6BA86B30B828B7B32948B8DB0FF3E1A04204E4A371B154D42CC2536033F8EE8854FE0EF4BC79CB78A7CEA0C335147C7DF5B0410CF8690DC1D9ECD1951E86B6AE26A94DB +// +// // 98 +// @Test +// public void testSetToken() { +// +// String tocken = "3078022017665B26FD20D2BE19CBCF275C43D7ECF95BBEEC2C2D1A79DF5068629D6FDDB302204A76974ADD337B5F3EAA0191AF6C7ADEE6BA86B30B828B7B32948B8DB0FF3E1A04204E4A371B154D42CC2536033F8EE8854FE0EF4BC79CB78A7CEA0C335147C7DF5B0410CF8690DC1D9ECD1951E86B6AE26A94DB"; +// boolean b = api.setToken(Util.hexString2Bytes(tocken)); +// System.out.println(b); +// +// } +// +// // 00223030303030303030 +// // 3939 +// // 30303230 +// // 3333333333333333333333333333333333333333 +// +// // 00220000000000000000 +// // 3939 +// // 30303230 +// // 3333333333333333333333333333333333333333 +// +// // 99 +// @Test +// public void testCalcAuthHead() { +// String info = "33333333333333333333"; +// byte[] bytes = api.calcAuthHead(info.getBytes()); +// System.out.println(Util.bytes2HexString(bytes)); +// } +// +// /** +// * 直接发送数据 +// */ +// @Test +// public void testDirect() { +// String s = "000A00000000000000004849"; +// api.directBytes(Util.hexString2Bytes(s)); +// } +// +// +// @Test +// public void test() throws IOException { +// String path = "E:\\work\\sunyard\\hsm\\projects\\sydapi\\src\\test\\java\\com\\sunyard\\sydapi\\test\\TestAllMethods.java"; +// BufferedReader reader = new BufferedReader(new FileReader(path)); +// +// String line = null; +// String[] list = new String[3]; +// int i = 0; +// int j = 0; +// int z = 0; +// +// while ((line = reader.readLine()) != null) { +// if ("@Test".equals(line.trim())) { +// j++; +// int index = 0; +// if ((index = getIndex(list, "// 测试通过")) != -1) { +// System.out.println(list[(index + 1) % 3].substring(3)); +// z++; +// } +// } else { +// list[i % 3] = line.trim(); +// i++; +// } +// } +// System.out.println(j); +// System.out.println(z); +// } +// +// public int getIndex(String[] list, String str) { +// +// for (int i = 0; i < list.length; i++) { +// if (str.equals(list[i])) { +// return i; +// } +// } +// +// return -1; +// } +// +// @Test +// public void test01() throws IOException { +// String path = "C:\\Users\\edgar\\Desktop\\新建文本文档 (2).txt"; +// BufferedReader reader = new BufferedReader(new FileReader(path)); +// +// String line = null; +// while ((line = reader.readLine()) != null) { +// if (line.startsWith("指令")) { +// System.out.println(line.substring(3)); +// } +// } +// } +// +// @Test +// public void test02() throws IOException { +// String path = "E:\\work\\sunyard\\hsm\\projects\\sydapi\\src\\main\\java\\racal\\sunyard\\main\\SydApi4j.java"; +// +// BufferedReader br = new BufferedReader(new FileReader(path)); +// +// String line = null; +// +// while ((line = br.readLine()) != null) { +// String trimLine = line.trim(); +// if (trimLine.startsWith("Proto")) { +// System.out.println(trimLine.substring(5, trimLine.indexOf(" "))); +// } +// } +// } +// +// @Test +// public void getAllMethod() { +// Method[] methods = SydApi4j.class.getDeclaredMethods(); +// for (Method method : methods) { +// Class returnType = method.getReturnType(); +// +// } +// } +//} +// diff --git a/src/test/java/com/sunyard/sydapi/test/TestHT.java b/src/test/java/com/sunyard/sydapi/test/TestHT.java index 6202e5e..81aaeed 100644 --- a/src/test/java/com/sunyard/sydapi/test/TestHT.java +++ b/src/test/java/com/sunyard/sydapi/test/TestHT.java @@ -4,17 +4,13 @@ import com.sunyard.RetWrap; import com.sunyard.SydApi; import com.sunyard.cert.X509; import com.sunyard.proto.Util; - import org.junit.After; -import org.junit.Assert; import org.junit.Before; import org.junit.Test; import racal.sunyard.main.SydApi4j; -import java.io.File; -import java.io.FileOutputStream; import java.io.UnsupportedEncodingException; -import java.util.Arrays; + /** * 衡泰例子 @@ -26,7 +22,7 @@ public class TestHT { @Before public void before() { // 通过设置debug的属性开启debug,如果不设置则默认不打开 -// System.setProperty("com.sunyard.sydapi4j.debug", "true"); + System.setProperty("com.sunyard.sydapi4j.debug", "true"); api = (SydApi4j) new SydApi4j().connect("172.16.18.59", 8889, null, 1000); // api = (SydApi4j) new SydApi4j().connect("192.168.0.66", 8889, null, 1000); } @@ -40,97 +36,35 @@ public class TestHT { } } - + /** + * 流程演示 + */ @Test - public void testDecryptDE5() throws UnsupportedEncodingException { + public void testProcess() throws UnsupportedEncodingException { String dn = "C=CN,O=CFCA OCA1,OU=YCCA,OU=Individual-2,CN=YCCA@黄金交易所@Zhuangj@1"; - String oData = "00001111222233"; + byte[] orgData = "111111213323143243243".getBytes("UTF-8"); - RetWrap retWrap = api.generateDEByDn(dn, oData); - String cipherKey = (String) retWrap.get(SydApi.RET_CIPHER_KEY); - System.out.println("数字信封: " + cipherKey); + // 签名 + byte[] sign = api.attachedSign(orgData, dn); + System.out.println("签名结果: " + Util.bytes2HexString(sign) ); + // 生成数字信封 + RetWrap retWrap = api.generateDEByDn(dn, sign); + byte[] cipherKey = (byte[]) retWrap.get(SydApi.RET_CIPHER_KEY); + System.out.println("数字信封: " + new String(cipherKey)); + + // 解密数字信封 RetWrap retWrap1 = api.decryptDEByDN(dn, cipherKey); + byte[] oData = (byte[]) retWrap1.get("oData"); System.out.println("原数据: " + retWrap1.get("oData")); - } - @Test - public void testDecryptDE5Soft1() throws UnsupportedEncodingException { - String dn = "C=CN,O=CFCA OCA1,OU=YCCA,OU=Individual-2,CN=YCCA@黄金交易所@Zhuangj@1"; - byte[] test = new byte[ 4 * 1024 ]; - Arrays.fill( test, (byte) 0x30 ); - String oData = new String(test); - - RetWrap retWrap = api.generateDEByDn(dn, oData); - String cipherKey = (String) retWrap.get(SydApi.RET_CIPHER_KEY); - System.out.println("数字信封: " + cipherKey); - - RetWrap retWrap1 = api.decryptDEByDN(dn, cipherKey); - System.out.println("原数据: " + retWrap1.get("oData")); - } - - @Test - public void testDecryptDE5Soft2() throws UnsupportedEncodingException { - String dn = "C=CN,O=CFCA OCA1,OU=YCCA,OU=Individual-2,CN=YCCA@黄金交易所@Zhuangj@1"; - String oData = "00001111222233000011112222330000111122223300001111222233000011112222330000111122223300001111222233"; - - RetWrap retWrap = api.generateDEByDnHsm(dn, oData); - String cipherKey = (String) retWrap.get(SydApi.RET_CIPHER_KEY); - System.out.println("数字信封: " + cipherKey); - - RetWrap retWrap1 = api.decryptDEByDNSoft(dn, cipherKey); - byte[] cat = (byte[]) retWrap1.get("oData"); - System.out.println("原数据: " + new String( cat )); - - Assert.assertEquals( oData, new String( cat )); - } - - - @Test - public void testDecryptDE5Soft3() throws UnsupportedEncodingException { - - long t1 = System.currentTimeMillis(); - System.out.println("start"); - - String dn = "C=CN,O=CFCA OCA1,OU=YCCA,OU=Individual-2,CN=YCCA@黄金交易所@Zhuangj@1"; - byte[] aData = new byte[ 20 * 1024 * 1024 ]; - Arrays.fill( aData, (byte) 0x55 ); - - String oData = new String( aData ); - RetWrap retWrap = api.generateDEByDnSoft(dn, oData); - String cipherKey = (String) retWrap.get(SydApi.RET_CIPHER_KEY); - System.out.println("数字信封: " + cipherKey); - write("./cms.p7", cipherKey.getBytes()); - long t2 = System.currentTimeMillis(); - System.out.println("加密耗时=" + ( t2 - t1 )); - - RetWrap retWrap1 = api.decryptDEByDNSoft(dn, cipherKey); - byte[] cat = (byte[]) retWrap1.get("oData"); - System.out.println("原数据: " + new String( cat )); - long t3 = System.currentTimeMillis(); - System.out.println("解密耗时=" + ( t3 - t2 )); - System.out.println("总耗时=" + ( t3 - t1 )); - - Assert.assertEquals( oData, new String( cat )); - } - - public static void write(String path, byte[] data){ - try { - File f = new File( path ); - if ( f.exists() ) { - f.createNewFile(); - } - FileOutputStream out = new FileOutputStream( f ); - try { - out.write( data ); - out.flush(); - out.close(); - } finally { - out.close(); - } - }catch ( Exception e ){ - e.printStackTrace(); + // 验签 + RetWrap verify = api.attachedVerifyAndGetAll(oData); + if (verify != null) { + System.out.println("x509公钥: " + Util.bytes2HexString(((X509)verify.get("x509")).getPubKey())); + System.out.println("签名原数据: " + Util.bytes2HexString((byte[])(verify.get("oData")))); } + } // @@ -139,8 +73,8 @@ public class TestHT { @Test public void testSM2ConfirmSessionKeyC() { - String userId = "1111111111111151"; - String data = "12343242"; + String userId = "8012"; + byte[] data = "12343242".getBytes(); // 通过用户id获取公钥 String pk = api.SM2GetPublicKeyC(userId, SydApi.FOR_ENCRYPT); @@ -153,7 +87,7 @@ public class TestHT { String kcv = (String) retWrap.get(SydApi.RET_KCV); // 使用生成的对称密钥加密数据 - byte[] dataEnc = api.SYMEncryptData(SydApi.NALG_SM4, sessionKey, data.getBytes()); + byte[] dataEnc = api.SYMEncryptData(SydApi.NALG_SM4, sessionKey, data); // 解密数字信封 RetWrap retWrap1 = api.SM2ConfirmSessionKeyC(userId, cipherKey); @@ -172,8 +106,8 @@ public class TestHT { public void testAttachedSignAndVerify() { String dn = "C=CN,O=CFCA OCA1,OU=YCCA,OU=Individual-2,CN=YCCA@黄金交易所@Zhuangj@1"; String orgData = "111111213323143243243"; - String sign = api.attachedSign(orgData.getBytes(), dn); - System.out.println("签名结果: " + sign); + byte[] sign = api.attachedSign(orgData.getBytes(), dn); + System.out.println("签名结果: " + Util.bytes2HexString(sign) ); boolean verify = api.attachedVerify(sign); System.out.println("验签结果: " + verify); @@ -182,9 +116,9 @@ public class TestHT { @Test public void testAttachedSignAndVerifyGetX509() { String dn = "C=CN,O=CFCA OCA1,OU=YCCA,OU=Individual-2,CN=YCCA@黄金交易所@Zhuangj@1"; - String orgData = "111111213323143243243"; - String sign = api.attachedSign(orgData.getBytes(), dn); - System.out.println("签名结果: " + sign); + byte[] orgData = "111111213323143243243".getBytes(); + byte[] sign = api.attachedSign(orgData, dn); + System.out.println("签名结果: " + Util.bytes2HexString(sign) ); X509 verify = api.attachedVerifyAndGetX509(sign); System.out.println("验签结果: " + Util.bytes2HexString(verify.getPubKey())); @@ -194,19 +128,19 @@ public class TestHT { public void testAttachedSignAndVerifyRD() { String dn = "C=CN,O=CFCA OCA1,OU=YCCA,OU=Individual-2,CN=YCCA@黄金交易所@Zhuangj@1"; String orgData = "111111213323143243243"; - String sign = api.attachedSign(orgData.getBytes(), dn); - System.out.println("签名结果: " + sign); + byte[] sign = api.attachedSign(orgData.getBytes(), dn); + System.out.println("签名结果: " + Util.bytes2HexString(sign)); - String verify = api.attachedVerifyRD(sign); - System.out.println("验签结果: " + verify); + byte[] verify = api.attachedVerifyRD(sign); + System.out.println("验签结果: " + Util.bytes2HexString(verify)); } @Test public void testAttachedSignAndVerifyGetAll() { String dn = "C=CN,O=CFCA OCA1,OU=YCCA,OU=Individual-2,CN=YCCA@黄金交易所@Zhuangj@1"; - String orgData = "111111213323143243243"; - String sign = api.attachedSign(orgData.getBytes(), dn); - System.out.println("签名结果: " + sign); + byte[] orgData = "111111213323143243243".getBytes(); + byte[] sign = api.attachedSign(orgData, dn); + System.out.println("签名结果: " + Util.bytes2HexString(sign)); RetWrap verify = api.attachedVerifyAndGetAll(sign); if (verify != null) { @@ -215,49 +149,68 @@ public class TestHT { } } + @Test + public void testDecryptDE54k() throws UnsupportedEncodingException { + String dn = "C=CN,O=CFCA OCA1,OU=YCCA,OU=Individual-2,CN=YCCA@黄金交易所@Zhuangj@1"; + byte[] oData = new byte[ 4 * 1024 ]; + RetWrap retWrap = api.generateDEByDn(dn, oData); + byte[] CipherKey = (byte[]) retWrap.get(SydApi.RET_CIPHER_KEY); + byte[] sessionKey = (byte[]) retWrap.get(SydApi.RET_SESSION_KEY); + printRetWrap(retWrap); + + RetWrap retWrap1 = api.decryptDEByDN(dn, CipherKey); + printRetWrap(retWrap1); + } @Test - public void getCert(){ + public void testDecryptDE54kr() throws UnsupportedEncodingException { + String dn = "CN=YCCA@黄金交易所@Zhuangj@1,OU=Individual-2,OU=YCCA,O=CFCA OCA1,C=CN"; + byte[] oData = new byte[ 4 * 1024 ]; + + RetWrap retWrap = api.generateDEByDn(dn, oData); + byte[] CipherKey = (byte[]) retWrap.get(SydApi.RET_CIPHER_KEY); + byte[] sessionKey = (byte[]) retWrap.get(SydApi.RET_SESSION_KEY); + printRetWrap(retWrap); + + RetWrap retWrap1 = api.decryptDEByDN(dn, CipherKey); + printRetWrap(retWrap1); + } + + + @Test + public void testDecryptDE520M() throws UnsupportedEncodingException { String dn = "C=CN,O=CFCA OCA1,OU=YCCA,OU=Individual-2,CN=YCCA@黄金交易所@Zhuangj@1"; - String cert = api.GetX509CertFileBySN("1111111111111151", SydApi.FOR_ENCRYPT ); - System.out.println( cert ); + byte[] oData = new byte[ 20 * 1024 * 1024 ]; + + RetWrap retWrap = api.generateDEByDn(dn, oData); + byte[] CipherKey = (byte[]) retWrap.get(SydApi.RET_CIPHER_KEY); + byte[] sessionKey = (byte[]) retWrap.get(SydApi.RET_SESSION_KEY); + printRetWrap(retWrap); + + RetWrap retWrap1 = api.decryptDEByDN(dn, CipherKey); + printRetWrap(retWrap1); + } + + @Test + public void testDecryptDE5() throws UnsupportedEncodingException { + String dn = "C=CN,O=CFCA OCA1,OU=YCCA,OU=Individual-2,CN=YCCA@黄金交易所@Zhuangj@1"; + byte[] oData = "00001111222233".getBytes(); + + RetWrap retWrap = api.generateDEByDn(dn, oData); + byte[] CipherKey = (byte[]) retWrap.get(SydApi.RET_CIPHER_KEY); + byte[] sessionKey = (byte[]) retWrap.get(SydApi.RET_SESSION_KEY); + printRetWrap(retWrap); + + RetWrap retWrap1 = api.decryptDEByDN(dn, CipherKey); + printRetWrap(retWrap1); } - /** - * 流程演示 - */ - @Test - public void testProcess() { - String dn = "C=CN,O=CFCA OCA1,OU=YCCA,OU=Individual-2,CN=YCCA@黄金交易所@Zhuangj@1"; - String orgData = "111111213323143243243"; - // 签名 - String sign = api.attachedSign(orgData.getBytes(), dn); - System.out.println("签名结果: " + sign); - - // 生成数字信封 - RetWrap retWrap = api.generateDEByDn(dn, sign); - String cipherKey = (String) retWrap.get(SydApi.RET_CIPHER_KEY); - System.out.println("数字信封: " + cipherKey); - - // 解密数字信封 - RetWrap retWrap1 = api.decryptDEByDN(dn, cipherKey); - String oData = (String) retWrap1.get("oData"); - System.out.println("原数据: " + retWrap1.get("oData")); - - // 验签 - RetWrap verify = api.attachedVerifyAndGetAll(oData); - if (verify != null) { - System.out.println("x509公钥: " + Util.bytes2HexString(((X509)verify.get("x509")).getPubKey())); - System.out.println("签名原数据: " + verify.get("oData")); - } - - } // 测试通过 // 76 @@ -271,6 +224,7 @@ public class TestHT { } + // =============================工具方法============================================== public static void printRetWrap(RetWrap rw) { diff --git a/src/test/java/com/sunyard/sydapi/test/TestSV.java b/src/test/java/com/sunyard/sydapi/test/TestSV.java index e312a01..03af732 100644 --- a/src/test/java/com/sunyard/sydapi/test/TestSV.java +++ b/src/test/java/com/sunyard/sydapi/test/TestSV.java @@ -1,104 +1,104 @@ -package com.sunyard.sydapi.test; - - -import com.sunyard.SydApi; -import com.sunyard.proto.Util; -import racal.sunyard.main.SydApi4j; -import racal.sunyard.main.SydApiBuilder; - -import static com.sunyard.SydApi.*; - - -public class TestSV { - - private static final String inHexData = "67c6697351ff4aec29cdbaabf2fbe346"; - private static final String dn = "C=CN,ST=浙江,L=杭州,O=信雅达测试123,OU=安全应用1,OU=安全应用2,CN=@信雅达安全测试"; - - - public static void main(String[] args) { - System.setProperty("com.sunyard.sydapi4j.debug", "true"); - // 连接加密机 - SydApi4j api = (SydApi4j) new SydApi4j().connect("172.16.18.59", 8889, null, 1000); - - SydApiBuilder builder = new SydApiBuilder().setIp("192.168.5.88"); - builder.build(); - - try { - - // case1(api); - case4(api); - case5(api); - - } catch (Exception e) { - e.printStackTrace(); - } finally { - api.disconnect(); - } - } - - public static void case1(SydApi api) { - String sign = api.attachedSign( Util.hexString2Bytes( inHexData ), dn ); - System.out.println("签名结果 " + sign ); - - - boolean pass = api.attachedVerify(sign); - System.out.println("验签结果 " + pass); - } - - - public static void case2(SydApi api) { - System.out.println("begin SYD_Sign_Detach"); - String sign = api.detachedSign( DATA_ORIGIN, Util.hexString2Bytes( inHexData ), dn ); - System.out.println("签名结果 " + sign ); - System.out.println("begin SYD_Sign_Detach"); - - System.out.println("begin SYD_Verify_Detach"); - boolean pass = api.detachedVerify(DATA_ORIGIN, Util.hexString2Bytes( inHexData ), sign); - System.out.println("验签结果 " + pass); - System.out.println("end SYD_Verify_Detach"); - } - - - public static void case3(SydApi api) { - System.out.println("begin SYD_NakedSign"); - byte[] sign = api.SYD_NakedSign( Util.hexString2Bytes(inHexData) , dn); - System.out.println("签名结果 " + Util.bytes2HexString(sign) ); - System.out.println("end SYD_NakedSign"); - - System.out.println("begin SYD_NakedVerify"); - boolean pass = api.SYD_NakedVerify( Util.hexString2Bytes(inHexData), sign, dn); - System.out.println("验签结果 " + pass); - System.out.println("end SYD_NakedVerify"); - } - - - public static void case4(SydApi api) { - // 不传 ID - String pk = api.SM2GetPublicKeyC("65667", 0 ); - String sk = api.SM2GetPrivateKeyC("000000000006566700000000001"); - - String sign = api.SM2SignC( 0, sk, Util.hexString2Bytes(pk), Util.hexString2Bytes(inHexData) ); - System.out.println("签名结果 " + sign ); - - boolean pass = api.SM2Verify(Util.hexString2Bytes(pk), Util.hexString2Bytes(inHexData), sign ); - System.out.println("验签结果 " + pass); - } - - - public static void case5(SydApi api) { - // 传 ID - String uid = "8765432187654321"; - String pk = api.SM2GetPublicKeyC("65667", 0 ); - String sk = api.SM2GetPrivateKeyC("000000000006566700000000001"); - - System.out.println("begin SYD_Sign_P1"); - String sign = api.SM2SignC( 0, uid, sk, Util.hexString2Bytes(pk), Util.hexString2Bytes(inHexData) ); - System.out.println("签名结果 " + Util.bytes2HexString( Util.decodeBase64( sign ) ) ); - System.out.println("end SYD_Verify_P1"); - - System.out.println("begin SYD_Sign_P1"); - boolean pass = api.SM2Verify(uid, 1, Util.hexString2Bytes(pk), Util.hexString2Bytes(inHexData), sign ); - System.out.println("验签结果 " + pass); - System.out.println("end SYD_Verify_P1"); - } -} +//package com.sunyard.sydapi.test; +// +// +//import com.sunyard.SydApi; +//import com.sunyard.proto.Util; +//import racal.sunyard.main.SydApi4j; +//import racal.sunyard.main.SydApiBuilder; +// +//import static com.sunyard.SydApi.*; +// +// +//public class TestSV { +// +// private static final String inHexData = "67c6697351ff4aec29cdbaabf2fbe346"; +// private static final String dn = "C=CN,ST=浙江,L=杭州,O=信雅达测试123,OU=安全应用1,OU=安全应用2,CN=@信雅达安全测试"; +// +// +// public static void main(String[] args) { +// System.setProperty("com.sunyard.sydapi4j.debug", "true"); +// // 连接加密机 +// SydApi4j api = (SydApi4j) new SydApi4j().connect("172.16.18.59", 8889, null, 1000); +// +// SydApiBuilder builder = new SydApiBuilder().setIp("192.168.5.88"); +// builder.build(); +// +// try { +// +// // case1(api); +// case4(api); +// case5(api); +// +// } catch (Exception e) { +// e.printStackTrace(); +// } finally { +// api.disconnect(); +// } +// } +// +// public static void case1(SydApi api) { +// String sign = api.attachedSign( Util.hexString2Bytes( inHexData ), dn ); +// System.out.println("签名结果 " + sign ); +// +// +// boolean pass = api.attachedVerify(sign); +// System.out.println("验签结果 " + pass); +// } +// +// +// public static void case2(SydApi api) { +// System.out.println("begin SYD_Sign_Detach"); +// String sign = api.detachedSign( DATA_ORIGIN, Util.hexString2Bytes( inHexData ), dn ); +// System.out.println("签名结果 " + sign ); +// System.out.println("begin SYD_Sign_Detach"); +// +// System.out.println("begin SYD_Verify_Detach"); +// boolean pass = api.detachedVerify(DATA_ORIGIN, Util.hexString2Bytes( inHexData ), sign); +// System.out.println("验签结果 " + pass); +// System.out.println("end SYD_Verify_Detach"); +// } +// +// +// public static void case3(SydApi api) { +// System.out.println("begin SYD_NakedSign"); +// byte[] sign = api.SYD_NakedSign( Util.hexString2Bytes(inHexData) , dn); +// System.out.println("签名结果 " + Util.bytes2HexString(sign) ); +// System.out.println("end SYD_NakedSign"); +// +// System.out.println("begin SYD_NakedVerify"); +// boolean pass = api.SYD_NakedVerify( Util.hexString2Bytes(inHexData), sign, dn); +// System.out.println("验签结果 " + pass); +// System.out.println("end SYD_NakedVerify"); +// } +// +// +// public static void case4(SydApi api) { +// // 不传 ID +// String pk = api.SM2GetPublicKeyC("65667", 0 ); +// String sk = api.SM2GetPrivateKeyC("000000000006566700000000001"); +// +// String sign = api.SM2SignC( 0, sk, Util.hexString2Bytes(pk), Util.hexString2Bytes(inHexData) ); +// System.out.println("签名结果 " + sign ); +// +// boolean pass = api.SM2Verify(Util.hexString2Bytes(pk), Util.hexString2Bytes(inHexData), sign ); +// System.out.println("验签结果 " + pass); +// } +// +// +// public static void case5(SydApi api) { +// // 传 ID +// String uid = "8765432187654321"; +// String pk = api.SM2GetPublicKeyC("65667", 0 ); +// String sk = api.SM2GetPrivateKeyC("000000000006566700000000001"); +// +// System.out.println("begin SYD_Sign_P1"); +// String sign = api.SM2SignC( 0, uid, sk, Util.hexString2Bytes(pk), Util.hexString2Bytes(inHexData) ); +// System.out.println("签名结果 " + Util.bytes2HexString( Util.decodeBase64( sign ) ) ); +// System.out.println("end SYD_Verify_P1"); +// +// System.out.println("begin SYD_Sign_P1"); +// boolean pass = api.SM2Verify(uid, 1, Util.hexString2Bytes(pk), Util.hexString2Bytes(inHexData), sign ); +// System.out.println("验签结果 " + pass); +// System.out.println("end SYD_Verify_P1"); +// } +//} diff --git a/src/test/java/com/sunyard/sydapi/util/SydCmsUtilTest.java b/src/test/java/com/sunyard/sydapi/util/SydCmsUtilTest.java index 9b83129..a1c505f 100644 --- a/src/test/java/com/sunyard/sydapi/util/SydCmsUtilTest.java +++ b/src/test/java/com/sunyard/sydapi/util/SydCmsUtilTest.java @@ -28,8 +28,8 @@ public class SydCmsUtilTest { String dn = "C=CN,O=CFCA OCA1,OU=YCCA,OU=Individual-2,CN=YCCA@黄金交易所@Zhuangj@1"; String oData = "00001111222233"; - RetWrap retWrap = api.generateDEByDnSoft(dn, oData); - String cipherKey = (String) retWrap.get(SydApi.RET_CIPHER_KEY); + RetWrap retWrap = api.generateDEByDnSoft(dn, oData.getBytes() ); + byte[] cipherKey = (byte[]) retWrap.get(SydApi.RET_CIPHER_KEY); System.out.println("数字信封: " + cipherKey); RetWrap retWrap1 = api.decryptDEByDN(dn, cipherKey);