打包
This commit is contained in:
parent
f5ffa53b68
commit
726eecdbc6
Binary file not shown.
415
src/test/java/com/sunyard/sydapi/test/Shanqing.java
Normal file
415
src/test/java/com/sunyard/sydapi/test/Shanqing.java
Normal file
@ -0,0 +1,415 @@
|
|||||||
|
package com.sunyard.sydapi.test;
|
||||||
|
|
||||||
|
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.UnsupportedEncodingException;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 上清例子
|
||||||
|
*/
|
||||||
|
public class Shanqing {
|
||||||
|
|
||||||
|
SydApi4j api;
|
||||||
|
|
||||||
|
@Before
|
||||||
|
public void before() {
|
||||||
|
// 通过设置debug的属性开启debug,如果不设置则默认不打开
|
||||||
|
System.setProperty("com.sunyard.sydapi4j.debug", "true");
|
||||||
|
api = (SydApi4j) new SydApi4j().connect("192.168.0.200", 8889, null, 1000);
|
||||||
|
}
|
||||||
|
|
||||||
|
@After
|
||||||
|
public void after() {
|
||||||
|
try {
|
||||||
|
this.api.disconnect();
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 流程演示
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void testProcess() {
|
||||||
|
String dn = "C=CN,O=CFCA OCA1,OU=YCCA,OU=Individual-2,CN=YCCA@黄金交易所@Zhuangj@1";
|
||||||
|
byte[] orgData = new byte[2 * 1024 * 1024];
|
||||||
|
|
||||||
|
// 签名
|
||||||
|
String sign = api.attachedSign(orgData, dn);
|
||||||
|
System.out.println("签名结果: " + sign);
|
||||||
|
|
||||||
|
// 生成数字信封
|
||||||
|
RetWrap retWrap = api.generateDEByDn(dn, sign.getBytes());
|
||||||
|
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"));
|
||||||
|
|
||||||
|
// 验签
|
||||||
|
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"))));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// 测试通过
|
||||||
|
// 73
|
||||||
|
@Test
|
||||||
|
public void testSM2ConfirmSessionKeyC() {
|
||||||
|
|
||||||
|
String userId = "8012";
|
||||||
|
byte[] data = "12343242".getBytes();
|
||||||
|
|
||||||
|
// 通过用户id获取公钥
|
||||||
|
String pk = api.SM2GetPublicKeyC(userId, SydApi.FOR_ENCRYPT);
|
||||||
|
|
||||||
|
// 生成数字信封
|
||||||
|
RetWrap retWrap = api.SM2GenSessionKey(pk);
|
||||||
|
printRetWrap(retWrap);
|
||||||
|
String cipherKey = (String) retWrap.get(SydApi.RET_CIPHER_KEY);
|
||||||
|
String sessionKey = (String) retWrap.get(SydApi.RET_SESSION_KEY);
|
||||||
|
String kcv = (String) retWrap.get(SydApi.RET_KCV);
|
||||||
|
|
||||||
|
// 使用生成的对称密钥加密数据
|
||||||
|
byte[] dataEnc = api.SYMEncryptData(SydApi.NALG_SM4, sessionKey, data);
|
||||||
|
|
||||||
|
// 解密数字信封
|
||||||
|
RetWrap retWrap1 = api.SM2ConfirmSessionKeyC(userId, cipherKey);
|
||||||
|
printRetWrap(retWrap1);
|
||||||
|
sessionKey = (String) retWrap1.get(SydApi.RET_SESSION_KEY);
|
||||||
|
kcv = (String) retWrap1.get(SydApi.RET_KCV);
|
||||||
|
|
||||||
|
// 使用解密出来的对称密钥解密数据
|
||||||
|
byte[] bytes1 = api.SYMDecryptData(SydApi.NALG_SM4, sessionKey, dataEnc);
|
||||||
|
System.out.println("解密后的数据:" + new String(bytes1));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testDetachedSignAndVerify1() throws UnsupportedEncodingException {
|
||||||
|
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);
|
||||||
|
System.out.println("签名结果 hex : " + Util.bytes2HexString(Util.decodeBase64(sign)));
|
||||||
|
|
||||||
|
boolean verify = api.attachedVerify(sign);
|
||||||
|
System.out.println("验签结果: " + verify);
|
||||||
|
Assert.assertTrue(verify);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testDetachedSignAndVerify2() throws UnsupportedEncodingException {
|
||||||
|
String dn = "C=CN,O=CFCA OCA1,OU=YCCA,OU=Individual-2,CN=YCCA@黄金交易所@Zhuangj@1";
|
||||||
|
String orgData = "111111213323143243243";
|
||||||
|
|
||||||
|
|
||||||
|
String sign = api.attachedSignSoft(orgData.getBytes(), dn);
|
||||||
|
System.out.println("签名结果: " + sign);
|
||||||
|
System.out.println("签名结果 hex: " + Util.bytes2HexString(Util.decodeBase64(sign)));
|
||||||
|
|
||||||
|
boolean verify = api.attachedVerify(sign);
|
||||||
|
System.out.println("验签结果: " + verify);
|
||||||
|
Assert.assertTrue(verify);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testDetachedSignAndVerify3() throws UnsupportedEncodingException {
|
||||||
|
String dn = "C=CN,O=CFCA OCA1,OU=YCCA,OU=Individual-2,CN=YCCA@黄金交易所@Zhuangj@1";
|
||||||
|
byte[] orgData = new byte[3 * 1024];
|
||||||
|
|
||||||
|
String sign = api.attachedSign(orgData, dn);
|
||||||
|
System.out.println("签名结果: " + sign);
|
||||||
|
System.out.println("签名结果 hex: " + Util.bytes2HexString(Util.decodeBase64(sign)));
|
||||||
|
|
||||||
|
boolean verify = api.attachedVerify(sign);
|
||||||
|
System.out.println("验签结果: " + verify);
|
||||||
|
Assert.assertTrue(verify);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testDetachedSignAndVerify8() throws UnsupportedEncodingException {
|
||||||
|
String dn = "C=CN,O=CFCA OCA1,OU=YCCA,OU=Individual-2,CN=YCCA@黄金交易所@Zhuangj@1";
|
||||||
|
byte[] orgData = new byte[8 * 1024];
|
||||||
|
|
||||||
|
String sign = api.attachedSign(orgData, dn);
|
||||||
|
System.out.println("签名结果: " + sign);
|
||||||
|
System.out.println("签名结果 hex: " + Util.bytes2HexString(Util.decodeBase64(sign)));
|
||||||
|
|
||||||
|
boolean verify = api.attachedVerify(sign);
|
||||||
|
System.out.println("验签结果: " + verify);
|
||||||
|
Assert.assertTrue(verify);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 测试通过
|
||||||
|
// 8018
|
||||||
|
@Test
|
||||||
|
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);
|
||||||
|
System.out.println("签名结果 hex : " + Util.bytes2HexString(Util.decodeBase64(sign)));
|
||||||
|
|
||||||
|
boolean verify = api.attachedVerify(sign);
|
||||||
|
System.out.println("验签结果: " + verify);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testAttachedSignAndVerifyGetX509() {
|
||||||
|
String dn = "C=CN,O=CFCA OCA1,OU=YCCA,OU=Individual-2,CN=YCCA@黄金交易所@Zhuangj@1";
|
||||||
|
byte[] orgData = "111111213323143243243".getBytes();
|
||||||
|
String sign = api.attachedSign(orgData, dn);
|
||||||
|
System.out.println("签名结果: " + sign);
|
||||||
|
|
||||||
|
|
||||||
|
X509 verify = api.attachedVerifyAndGetX509(sign);
|
||||||
|
System.out.println("验签结果: " + Util.bytes2HexString(verify.getPubKey()));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
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[] 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";
|
||||||
|
byte[] orgData = "111111213323143243243".getBytes();
|
||||||
|
String sign = api.attachedSign(orgData, 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"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testAttachedSignAndVerifyGetAll8k() {
|
||||||
|
String dn = "C=CN,O=CFCA OCA1,OU=YCCA,OU=Individual-2,CN=YCCA@黄金交易所@Zhuangj@1";
|
||||||
|
byte[] orgData = new byte[ 8 * 1024 ];
|
||||||
|
String sign = api.attachedSign(orgData, 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"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testAttachedSignAndVerifyGetX509C() {
|
||||||
|
String dn = "C=CN,O=CFCA OCA1,OU=YCCA,OU=Individual-2,CN=YCCA@黄金交易所@Zhuangj@1";
|
||||||
|
byte[] orgData = "111111213323143243243".getBytes();
|
||||||
|
byte[] sign = api.attachedSignC(orgData, dn);
|
||||||
|
System.out.println("签名结果: " + sign);
|
||||||
|
|
||||||
|
X509 verify = api.attachedVerifyAndGetX509(sign);
|
||||||
|
System.out.println("验签结果: " + Util.bytes2HexString(verify.getPubKey()));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testAttachedSignAndVerifyRDC() {
|
||||||
|
String dn = "C=CN,O=CFCA OCA1,OU=YCCA,OU=Individual-2,CN=YCCA@黄金交易所@Zhuangj@1";
|
||||||
|
String orgData = "111111213323143243243";
|
||||||
|
byte[] sign = api.attachedSignC(orgData.getBytes(), dn);
|
||||||
|
System.out.println("签名结果: " + sign);
|
||||||
|
|
||||||
|
byte[] verify = api.attachedVerifyRD(sign);
|
||||||
|
System.out.println("验签结果: " + Util.bytes2HexString(verify));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testAttachedSignAndVerifyGetAllC() {
|
||||||
|
String dn = "C=CN,O=CFCA OCA1,OU=YCCA,OU=Individual-2,CN=YCCA@黄金交易所@Zhuangj@1";
|
||||||
|
byte[] orgData = "111111213323143243243".getBytes();
|
||||||
|
byte[] sign = api.attachedSignC(orgData, 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"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testDecryptDE54k12() 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.generateDEByDnHsm(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.decryptDEByDNSoft(dn, new String(CipherKey));
|
||||||
|
printRetWrap(retWrap1);
|
||||||
|
byte[] deData = (byte[]) retWrap1.get("oData");
|
||||||
|
Assert.assertArrayEquals(deData, oData);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testDecryptDE54k21() 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.generateDEByDnSoft(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.decryptDEByDNHsm(dn, new String(CipherKey));
|
||||||
|
printRetWrap(retWrap1);
|
||||||
|
byte[] deData = (byte[]) retWrap1.get("oData");
|
||||||
|
Assert.assertArrayEquals(deData, oData);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@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 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";
|
||||||
|
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 testDecryptDE58k() throws UnsupportedEncodingException {
|
||||||
|
String dn = "C=CN,O=CFCA OCA1,OU=YCCA,OU=Individual-2,CN=YCCA@黄金交易所@Zhuangj@1";
|
||||||
|
byte[] oData = new byte[8 * 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);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 测试通过
|
||||||
|
// 76
|
||||||
|
@Test
|
||||||
|
public void testSM3Hash() {
|
||||||
|
String orgData = "FFFFFFFFFFFFFFFF";
|
||||||
|
|
||||||
|
byte[] hash = api.SM3Hash(orgData.getBytes());
|
||||||
|
|
||||||
|
System.out.println("hash:" + Util.bytes2HexString(hash));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// =============================工具方法==============================================
|
||||||
|
|
||||||
|
public static void printRetWrap(RetWrap rw) {
|
||||||
|
printRetWrap(rw, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 输出
|
||||||
|
*
|
||||||
|
* @param rw
|
||||||
|
*/
|
||||||
|
public static void printRetWrap(RetWrap rw, boolean flag) {
|
||||||
|
for (String s : rw.keySet()) {
|
||||||
|
|
||||||
|
Object o = rw.get(s);
|
||||||
|
if (o instanceof String) {
|
||||||
|
System.out.println(s + ":" + o);
|
||||||
|
} else if (o instanceof byte[]) {
|
||||||
|
if (flag) {
|
||||||
|
System.out.println(s + ": " + Util.bytes2HexString((byte[]) o));
|
||||||
|
} else {
|
||||||
|
System.out.println(s + ": " + new String((byte[]) o));
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
System.out.println(s + ":" + o);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -4,10 +4,6 @@ import com.sunyard.RetWrap;
|
|||||||
import com.sunyard.SydApi;
|
import com.sunyard.SydApi;
|
||||||
import com.sunyard.cert.X509;
|
import com.sunyard.cert.X509;
|
||||||
import com.sunyard.proto.Util;
|
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 racal.sunyard.main.SydApi4j;
|
||||||
|
|
||||||
import java.io.UnsupportedEncodingException;
|
import java.io.UnsupportedEncodingException;
|
||||||
@ -18,397 +14,40 @@ import java.io.UnsupportedEncodingException;
|
|||||||
*/
|
*/
|
||||||
public class Sample {
|
public class Sample {
|
||||||
|
|
||||||
SydApi4j api;
|
public static void main(String[] args) throws UnsupportedEncodingException {
|
||||||
|
|
||||||
@Before
|
|
||||||
public void before() {
|
|
||||||
// 通过设置debug的属性开启debug,如果不设置则默认不打开
|
// 通过设置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);
|
// 单台加密机
|
||||||
}
|
SydApi api = new SydApi4j().connect("192.168.0.200", 8889, null, 1000);
|
||||||
|
|
||||||
@After
|
|
||||||
public void after() {
|
|
||||||
try {
|
try {
|
||||||
this.api.disconnect();
|
String dn = "C=CN,O=CFCA OCA1,OU=YCCA,OU=Individual-2,CN=YCCA@黄金交易所@Zhuangj@1";
|
||||||
} catch (Exception e) {
|
byte[] orgData = new byte[2 * 1024 * 1024];
|
||||||
e.printStackTrace();
|
|
||||||
}
|
// 签名
|
||||||
}
|
String sign = api.attachedSign(orgData, dn);
|
||||||
|
System.out.println("签名结果: " + sign);
|
||||||
/**
|
|
||||||
* 流程演示
|
// 生成数字信封
|
||||||
*/
|
RetWrap retWrap = api.generateDEByDn(dn, sign.getBytes());
|
||||||
@Test
|
byte[] cipherKey = (byte[]) retWrap.get(SydApi.RET_CIPHER_KEY);
|
||||||
public void testProcess() {
|
System.out.println("数字信封: " + new String(cipherKey));
|
||||||
String dn = "C=CN,O=CFCA OCA1,OU=YCCA,OU=Individual-2,CN=YCCA@黄金交易所@Zhuangj@1";
|
|
||||||
byte[] orgData = new byte[2 * 1024 * 1024];
|
// 解密数字信封
|
||||||
|
RetWrap retWrap1 = api.decryptDEByDN(dn, cipherKey);
|
||||||
// 签名
|
byte[] oData = (byte[]) retWrap1.get("oData");
|
||||||
String sign = api.attachedSign(orgData, dn);
|
System.out.println("原数据: " + retWrap1.get("oData"));
|
||||||
System.out.println("签名结果: " + sign);
|
|
||||||
|
// 验签
|
||||||
// 生成数字信封
|
RetWrap verify = api.attachedVerifyAndGetAll(oData);
|
||||||
RetWrap retWrap = api.generateDEByDn(dn, sign.getBytes());
|
if (verify != null) {
|
||||||
byte[] cipherKey = (byte[]) retWrap.get(SydApi.RET_CIPHER_KEY);
|
System.out.println("x509公钥: " + Util.bytes2HexString(((X509) verify.get("x509")).getPubKey()));
|
||||||
System.out.println("数字信封: " + new String(cipherKey));
|
System.out.println("签名原数据: " + Util.bytes2HexString((byte[]) (verify.get("oData"))));
|
||||||
|
}
|
||||||
// 解密数字信封
|
} finally {
|
||||||
RetWrap retWrap1 = api.decryptDEByDN(dn, cipherKey);
|
if (null != api) {
|
||||||
byte[] oData = (byte[]) retWrap1.get("oData");
|
api.disconnect();
|
||||||
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("签名原数据: " + Util.bytes2HexString((byte[]) (verify.get("oData"))));
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// 测试通过
|
|
||||||
// 73
|
|
||||||
@Test
|
|
||||||
public void testSM2ConfirmSessionKeyC() {
|
|
||||||
|
|
||||||
String userId = "8012";
|
|
||||||
byte[] data = "12343242".getBytes();
|
|
||||||
|
|
||||||
// 通过用户id获取公钥
|
|
||||||
String pk = api.SM2GetPublicKeyC(userId, SydApi.FOR_ENCRYPT);
|
|
||||||
|
|
||||||
// 生成数字信封
|
|
||||||
RetWrap retWrap = api.SM2GenSessionKey(pk);
|
|
||||||
printRetWrap(retWrap);
|
|
||||||
String cipherKey = (String) retWrap.get(SydApi.RET_CIPHER_KEY);
|
|
||||||
String sessionKey = (String) retWrap.get(SydApi.RET_SESSION_KEY);
|
|
||||||
String kcv = (String) retWrap.get(SydApi.RET_KCV);
|
|
||||||
|
|
||||||
// 使用生成的对称密钥加密数据
|
|
||||||
byte[] dataEnc = api.SYMEncryptData(SydApi.NALG_SM4, sessionKey, data);
|
|
||||||
|
|
||||||
// 解密数字信封
|
|
||||||
RetWrap retWrap1 = api.SM2ConfirmSessionKeyC(userId, cipherKey);
|
|
||||||
printRetWrap(retWrap1);
|
|
||||||
sessionKey = (String) retWrap1.get(SydApi.RET_SESSION_KEY);
|
|
||||||
kcv = (String) retWrap1.get(SydApi.RET_KCV);
|
|
||||||
|
|
||||||
// 使用解密出来的对称密钥解密数据
|
|
||||||
byte[] bytes1 = api.SYMDecryptData(SydApi.NALG_SM4, sessionKey, dataEnc);
|
|
||||||
System.out.println("解密后的数据:" + new String(bytes1));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void testDetachedSignAndVerify1() throws UnsupportedEncodingException {
|
|
||||||
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);
|
|
||||||
System.out.println("签名结果 hex : " + Util.bytes2HexString(Util.decodeBase64(sign)));
|
|
||||||
|
|
||||||
boolean verify = api.attachedVerify(sign);
|
|
||||||
System.out.println("验签结果: " + verify);
|
|
||||||
Assert.assertTrue(verify);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void testDetachedSignAndVerify2() throws UnsupportedEncodingException {
|
|
||||||
String dn = "C=CN,O=CFCA OCA1,OU=YCCA,OU=Individual-2,CN=YCCA@黄金交易所@Zhuangj@1";
|
|
||||||
String orgData = "111111213323143243243";
|
|
||||||
|
|
||||||
|
|
||||||
String sign = api.attachedSignSoft(orgData.getBytes(), dn);
|
|
||||||
System.out.println("签名结果: " + sign);
|
|
||||||
System.out.println("签名结果 hex: " + Util.bytes2HexString(Util.decodeBase64(sign)));
|
|
||||||
|
|
||||||
boolean verify = api.attachedVerify(sign);
|
|
||||||
System.out.println("验签结果: " + verify);
|
|
||||||
Assert.assertTrue(verify);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void testDetachedSignAndVerify3() throws UnsupportedEncodingException {
|
|
||||||
String dn = "C=CN,O=CFCA OCA1,OU=YCCA,OU=Individual-2,CN=YCCA@黄金交易所@Zhuangj@1";
|
|
||||||
byte[] orgData = new byte[3 * 1024];
|
|
||||||
|
|
||||||
String sign = api.attachedSign(orgData, dn);
|
|
||||||
System.out.println("签名结果: " + sign);
|
|
||||||
System.out.println("签名结果 hex: " + Util.bytes2HexString(Util.decodeBase64(sign)));
|
|
||||||
|
|
||||||
boolean verify = api.attachedVerify(sign);
|
|
||||||
System.out.println("验签结果: " + verify);
|
|
||||||
Assert.assertTrue(verify);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void testDetachedSignAndVerify8() throws UnsupportedEncodingException {
|
|
||||||
String dn = "C=CN,O=CFCA OCA1,OU=YCCA,OU=Individual-2,CN=YCCA@黄金交易所@Zhuangj@1";
|
|
||||||
byte[] orgData = new byte[8 * 1024];
|
|
||||||
|
|
||||||
String sign = api.attachedSign(orgData, dn);
|
|
||||||
System.out.println("签名结果: " + sign);
|
|
||||||
System.out.println("签名结果 hex: " + Util.bytes2HexString(Util.decodeBase64(sign)));
|
|
||||||
|
|
||||||
boolean verify = api.attachedVerify(sign);
|
|
||||||
System.out.println("验签结果: " + verify);
|
|
||||||
Assert.assertTrue(verify);
|
|
||||||
}
|
|
||||||
|
|
||||||
// 测试通过
|
|
||||||
// 8018
|
|
||||||
@Test
|
|
||||||
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);
|
|
||||||
System.out.println("签名结果 hex : " + Util.bytes2HexString(Util.decodeBase64(sign)));
|
|
||||||
|
|
||||||
boolean verify = api.attachedVerify(sign);
|
|
||||||
System.out.println("验签结果: " + verify);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void testAttachedSignAndVerifyGetX509() {
|
|
||||||
String dn = "C=CN,O=CFCA OCA1,OU=YCCA,OU=Individual-2,CN=YCCA@黄金交易所@Zhuangj@1";
|
|
||||||
byte[] orgData = "111111213323143243243".getBytes();
|
|
||||||
String sign = api.attachedSign(orgData, dn);
|
|
||||||
System.out.println("签名结果: " + sign);
|
|
||||||
|
|
||||||
|
|
||||||
X509 verify = api.attachedVerifyAndGetX509(sign);
|
|
||||||
System.out.println("验签结果: " + Util.bytes2HexString(verify.getPubKey()));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
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[] 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";
|
|
||||||
byte[] orgData = "111111213323143243243".getBytes();
|
|
||||||
String sign = api.attachedSign(orgData, 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"));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void testAttachedSignAndVerifyGetAll8k() {
|
|
||||||
String dn = "C=CN,O=CFCA OCA1,OU=YCCA,OU=Individual-2,CN=YCCA@黄金交易所@Zhuangj@1";
|
|
||||||
byte[] orgData = new byte[ 8 * 1024 ];
|
|
||||||
String sign = api.attachedSign(orgData, 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"));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void testAttachedSignAndVerifyGetX509C() {
|
|
||||||
String dn = "C=CN,O=CFCA OCA1,OU=YCCA,OU=Individual-2,CN=YCCA@黄金交易所@Zhuangj@1";
|
|
||||||
byte[] orgData = "111111213323143243243".getBytes();
|
|
||||||
byte[] sign = api.attachedSignC(orgData, dn);
|
|
||||||
System.out.println("签名结果: " + sign);
|
|
||||||
|
|
||||||
X509 verify = api.attachedVerifyAndGetX509(sign);
|
|
||||||
System.out.println("验签结果: " + Util.bytes2HexString(verify.getPubKey()));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void testAttachedSignAndVerifyRDC() {
|
|
||||||
String dn = "C=CN,O=CFCA OCA1,OU=YCCA,OU=Individual-2,CN=YCCA@黄金交易所@Zhuangj@1";
|
|
||||||
String orgData = "111111213323143243243";
|
|
||||||
byte[] sign = api.attachedSignC(orgData.getBytes(), dn);
|
|
||||||
System.out.println("签名结果: " + sign);
|
|
||||||
|
|
||||||
byte[] verify = api.attachedVerifyRD(sign);
|
|
||||||
System.out.println("验签结果: " + Util.bytes2HexString(verify));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void testAttachedSignAndVerifyGetAllC() {
|
|
||||||
String dn = "C=CN,O=CFCA OCA1,OU=YCCA,OU=Individual-2,CN=YCCA@黄金交易所@Zhuangj@1";
|
|
||||||
byte[] orgData = "111111213323143243243".getBytes();
|
|
||||||
byte[] sign = api.attachedSignC(orgData, 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"));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void testDecryptDE54k12() 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.generateDEByDnHsm(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.decryptDEByDNSoft(dn, new String(CipherKey));
|
|
||||||
printRetWrap(retWrap1);
|
|
||||||
byte[] deData = (byte[]) retWrap1.get("oData");
|
|
||||||
Assert.assertArrayEquals(deData, oData);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void testDecryptDE54k21() 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.generateDEByDnSoft(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.decryptDEByDNHsm(dn, new String(CipherKey));
|
|
||||||
printRetWrap(retWrap1);
|
|
||||||
byte[] deData = (byte[]) retWrap1.get("oData");
|
|
||||||
Assert.assertArrayEquals(deData, oData);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@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 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";
|
|
||||||
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 testDecryptDE58k() throws UnsupportedEncodingException {
|
|
||||||
String dn = "C=CN,O=CFCA OCA1,OU=YCCA,OU=Individual-2,CN=YCCA@黄金交易所@Zhuangj@1";
|
|
||||||
byte[] oData = new byte[8 * 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);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// 测试通过
|
|
||||||
// 76
|
|
||||||
@Test
|
|
||||||
public void testSM3Hash() {
|
|
||||||
String orgData = "FFFFFFFFFFFFFFFF";
|
|
||||||
|
|
||||||
byte[] hash = api.SM3Hash(orgData.getBytes());
|
|
||||||
|
|
||||||
System.out.println("hash:" + Util.bytes2HexString(hash));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// =============================工具方法==============================================
|
|
||||||
|
|
||||||
public static void printRetWrap(RetWrap rw) {
|
|
||||||
printRetWrap(rw, false);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 输出
|
|
||||||
*
|
|
||||||
* @param rw
|
|
||||||
*/
|
|
||||||
public static void printRetWrap(RetWrap rw, boolean flag) {
|
|
||||||
for (String s : rw.keySet()) {
|
|
||||||
|
|
||||||
Object o = rw.get(s);
|
|
||||||
if (o instanceof String) {
|
|
||||||
System.out.println(s + ":" + o);
|
|
||||||
} else if (o instanceof byte[]) {
|
|
||||||
if (flag) {
|
|
||||||
System.out.println(s + ": " + Util.bytes2HexString((byte[]) o));
|
|
||||||
} else {
|
|
||||||
System.out.println(s + ": " + new String((byte[]) o));
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
System.out.println(s + ":" + o);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user