保存周一豪电脑

This commit is contained in:
yihzhou
2023-08-02 14:00:36 +08:00
parent ad443356b3
commit 7a4f9892f5
13 changed files with 1453 additions and 388 deletions
+198 -1
View File
@@ -1,2 +1,199 @@
package sample;public class Test4Nongxin {
package sample;
import cn.hutool.core.codec.Base64;
import com.sunyard.SydApi;
import com.sunyard.SydApiException;
import com.sunyard.cert.X509;
import com.sunyard.proto.Util;
import com.sunyard.util.ASN1Util;
import com.sunyard.util.SYMUtil;
import org.junit.Test;
import racal.sunyard.main.SydApi4j;
import racal.sunyard.main.SydApiBuilder;
import java.io.UnsupportedEncodingException;
import java.util.List;
public class Test4Nongxin {
private static final String SM2dn = "C=CN,O=CFCA OCA1,OU=YCCA,OU=Individual-2,CN=YCCA@黄金交易所@Zhuangj@1";
private static final String RSAdn = "C=cn,O=CFCA TEST CA,OU=NCS2,OU=Enterprises,CN=041@Z402451000010@ShanDong@00000001";
private static final byte[] orgData = new byte[ 10*1024 ];
private static final byte[] orgDataBig = new byte[ 10*1024 ];
public static void main(String[] args) {
//System.setProperty("com.sunyard.sydapi4j.debug", "true");
//设置连接
SydApiBuilder builder = new SydApiBuilder().setIp("172.16.17.161");
SydApi4j api = (SydApi4j) builder.build();
try {
//SM2裸签
byte[] nakedSign1 = api.SYD_NakedSignAll(4,orgData, SM2dn);
System.out.println("SM2大数据裸签:"+ Util.bytes2HexString(nakedSign1));
boolean nakedVerify1 = api.SYD_NakedVerifyAll(4,orgData, nakedSign1, SM2dn);
System.out.println("SM2大数据验签:"+nakedVerify1 );
//RSA裸签
byte[] nakedSign2 = api.SYD_NakedSignAll(1,orgData, RSAdn);
System.out.println("RSA大数据裸签:"+ Util.bytes2HexString(nakedSign2));
boolean nakedVerify2 = api.SYD_NakedVerifyAll(1,orgData, nakedSign2, RSAdn);
System.out.println("RSA大数据验签:"+nakedVerify2 );
byte[] nakedSign3 = api.SYD_NakedSignAll(4,orgData, SM2dn);
System.out.println("SM2裸签:"+ Util.bytes2HexString(nakedSign3));
boolean nakedVerify3 = api.SYD_NakedVerifyAll(4,orgData, nakedSign3, SM2dn);
System.out.println("SM2验签:"+nakedVerify3 );
byte[] nakedSign4 = api.SYD_NakedSignAll(2,orgData, RSAdn);
System.out.println("RSA裸签:"+ Util.bytes2HexString(nakedSign4));
boolean nakedVerify4 = api.SYD_NakedVerifyAll(2,orgData, nakedSign4, RSAdn);
System.out.println("RSA验签:"+nakedVerify4 );
String s = api.detachedSignAll(4, orgData, SM2dn);
System.out.println("SM2detach签名:"+s);
boolean b = api.detachedVerifyAll(4, orgData, s);
System.out.println("SM2detach验签:"+b);
String sde = api.detachedSignAll(4, orgDataBig, SM2dn);
System.out.println("SM2detach签名:"+sde);
boolean bde = api.detachedVerifyAll(4, orgDataBig, sde);
System.out.println("SM2detach验签:"+bde);
String rsa = api.detachedSignAll(2, orgData, RSAdn);
System.out.println("RSA detach签名:"+rsa);
boolean br = api.detachedVerifyAll(2, orgData, rsa);
System.out.println("RSA detach验签:"+br);
String det = api.detachedSignAll(3, orgDataBig, RSAdn);
System.out.println("RSA大数据detach签名:"+det);
boolean boo = api.detachedVerifyAll(3, orgDataBig, det);
System.out.println("RSA大数据detach验签:"+boo);
} catch (SydApiException e) {
throw new RuntimeException(e);
} finally {
api.disconnect();
}
}
@Test
public void testDetach() throws UnsupportedEncodingException {
System.setProperty("com.sunyard.sydapi4j.debug", "true");
//设置连接
SydApiBuilder builder = new SydApiBuilder().setIp("172.16.17.161").setPort(8889).setTimeout(3000);
SydApi4j api = (SydApi4j) builder.build();
String dnn="C=CN,O=CFCA OCA1,OU=TPC-S3,OU=Organizational-2,CN=ARCU54H100000024";
String plain="<?xml version=\"1.0\" encoding=\"utf-8\"?><SignData><TradeType authLevel=\"0\" name=\"银行账号转账\">tran/acctTran</TradeType><Fields><PAYER_ACCT_NO name=\"付款账号:\">6217788300130014042</PAYER_ACCT_NO><RCV_ACCT_NO name=\"收款账号:\">6200548800010650170</RCV_ACCT_NO><RCV_ACCT_NAME name=\"收款方账户名称:\">测试</RCV_ACCT_NAME><TRAN_AMT name=\"转账金额:\">60001</TRAN_AMT></Fields></SignData>";
String signed = "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";
boolean boo = api.detachedVerifyAll(3, plain.getBytes(), signed);
System.out.println("RSA大数据detach验签:"+boo);
plain.getBytes("UTF-8");
}
@Test
public void p1Test() throws UnsupportedEncodingException {
// 调试模式
// System.setProperty("com.sunyard.sydapi4j.debug", "true");
// 建立连接
String certDn ="C=CN,O=Sunyard,OU=8001,CN=8001";
String DN = "C=CN,OU=eves,CN=jindiancloud";
String Sm2DN="C=CN,O=CFCA OCA1,OU=YCCA,OU=Individual-2,CN=YCCA@黄金交易所@Zhuangj@1";
//设置连接
SydApiBuilder builder = new SydApiBuilder().setIp("172.16.17.161").setPort(8889).setTimeout(3000);
SydApi4j api = (SydApi4j) builder.build();
byte[] oData = new byte[10];
//p1签名
byte[] sign = api.SYD_NakedSignAll(4,oData, Sm2DN);
// System.out.println("p1签名:"+ Util.bytes2HexString(sign));
String base64Sign = Util.encodeBase64(sign);
System.out.println("p1签名:"+ base64Sign);
// boolean pass = api.SYD_NakedVerifyAll(4,oData,sign, Sm2DN);
// System.out.println("验签结果 " + pass);
//
// String certByDn = api.getCertByDn(Sm2DN,0);
// X509 x509 = api.GetX509CertInfo(certByDn);
// byte[] pubKey = x509.getPubKey();
// System.out.println("公钥:"+Util.bytes2HexString(pubKey));
//
// String s = api.SYD_SM2_Sign_HA("8012", 1, pubKey, oData);
// System.out.println("公钥签名:"+s);
//
// hihi
String sign2 ="svVyVaA6Og8QCWagGBdohDuIh/Lhb34Lv6Kc+3OE0GVVPdYxi9+zM6IBq6ZxEjuyIRPnxy1GCdye5I9hEOqZuQ==";
byte[] bytes = SYMUtil.base64Sign2DerSign(sign2);
System.out.println(Util.bytes2HexString(bytes));
//byte[] bytes2 = SYMUtil.base64SignAsDerSign(sign2);
byte[] bytes2 = SYMUtil.base64SignAsDerSign(Util.encodeBase64(bytes));
System.out.println(Util.bytes2HexString(bytes2));
List<String> allCert = api.getAllCert();
System.out.println(allCert);
// String Data= "<MainBody>\n" +
// " <MsgId>\n" +
// " <Id>400027000000000202305300000000931</Id>\n" +
// " <CreDtTm>2023-05-30T18:04:12</CreDtTm>\n" +
// " </MsgId>\n" +
// " <ReqMsgInf><NES002><MsgId><Id>400027000000000202305300000000931</Id><CreDtTm>2023-05-30T18:06:46</CreDtTm></MsgId><DwrInf><AppBrId>400027</AppBrId><NoDrtPtcptInf><Name>日照德润建筑工程有限公司</Name><SocCode>91371100773158280D</SocCode><DistTp>DT02</DistTp><BrAcctInf><AcctName>日照德润建筑工程有限公司</AcctName><Acct>803011301421013273</Acct><OpenBrId>000041816</OpenBrId></BrAcctInf></NoDrtPtcptInf></DwrInf><SgntrMk><PrxySgntr>PS01</PrxySgntr><PtcptSgntr>3300000009831853</PtcptSgntr></SgntrMk><DraftBasicInf><CdNo>731346340004320230530000114152</CdNo><CdRange>000000000001,000002000000</CdRange><CdAmt Ccy=\"CNY\">20000.00</CdAmt><StdAmt Ccy=\"CNY\">0.01</StdAmt></DraftBasicInf><BusiInf><Dt>2023-05-30</Dt><BusiCategory>BC02</BusiCategory><UcondlConsgnmtMrk>CC00</UcondlConsgnmtMrk></BusiInf></NES002></ReqMsgInf>\n" +
// " <AutoSend>0</AutoSend>\n" +
// " <DraftBasicInf>\n" +
// " <CdNo>731346340004320230530000114152</CdNo>\n" +
// " <CdRange>000000000001,000002000000</CdRange>\n" +
// " <CdAmt Ccy=\"CNY\">20000.00</CdAmt>\n" +
// " <StdAmt Ccy=\"CNY\">0.01</StdAmt>\n" +
// " </DraftBasicInf>\n" +
// " <DraftInf>\n" +
// " <CdMedia>ME02</CdMedia>\n" +
// " <CdType>AC02</CdType>\n" +
// " <CdSource>CS03</CdSource>\n" +
// " <IssDt>2023-05-30</IssDt>\n" +
// " <DueDt>2023-05-31</DueDt>\n" +
// " </DraftInf>\n" +
// "</MainBody>";
//
// String Data2 ="";
// String pk= "A0IABNTSZikiGRMscOVhIvGntbsvhz+fe8y/WqFSc10IwiAs6vuAYaN/RJ5/cFHDsC08I+vJOiiRFZPRe3vgAHad8Hs=";
// String sign2 ="MEYCIQDiIjaN/OXnEwHEIoTVR8ADB47FzEI4kb9VVIe0au1gVgIhAKNqfCeu6NAs9bFF1IrJvUDYvZTKRIM1OkKDQU8trSfY";
// boolean verify_ha = api.SYD_SM2_Verify_HA(1, Util.decodeBase64(pk), Data.getBytes(), sign2);
// System.out.println("公钥验签2:"+verify_ha);
}
@Test
public void test4SLS() throws UnsupportedEncodingException {
System.setProperty("com.sunyard.sydapi4j.debug", "true");
String DN = "C=CN,OU=eves,CN=jindiancloud";
//设置连接
SydApiBuilder builder = new SydApiBuilder().setIp("172.16.17.161").setPort(8889).setTimeout(3000);
SydApi4j api = (SydApi4j) builder.build();
String Data ="{\"head\":{\"SrcCode\":\"C00000000002\",\"SigCerNo\":\"0000000000000001\",\"ReqTime\":\"20221115175955\",\"TranCode\":\"T1001\",\"ReqSeqNo\":\"C1002003000120221103101855000001\",\"DesCode\":\"B00000000005\"},\"body\":{\"AccNo\":\"76690188000100128\",\"RequestCode\":\"B00000000005\",\"ReceiveCode\":\"C00000000002\",\"CurrCod\":\"CNY\",\"PushEves\":\"1\",\"VouDate\":\"20221012\",\"CallUrl\":\"192.44.2.97:31003\",\"IsStore\":\"1\",\"VouNo\":\"20221103031\",\"AntiTamperSign\":\"7e0ef4b1d7cac4c15b070af3fdbb574eed51e960b998a8c67db8287691d14e74\"}}";
String base64Data="eyJoZWFkIjp7IlNyY0NvZGUiOiJDMDAwMDAwMDAwMDIiLCJTaWdDZXJObyI6IjAwMDAwMDAwMDAwMDAwMDEiLCJSZXFUaW1lIjoiMjAyMjExMTUxNzU5NTUiLCJUcmFuQ29kZSI6IlQxMDAxIiwiUmVxU2VxTm8iOiJDMTAwMjAwMzAwMDEyMDIyMTEwMzEwMTg1NTAwMDAwMSIsIkRlc0NvZGUiOiJCMDAwMDAwMDAwMDUifSwiYm9keSI6eyJBY2NObyI6Ijc2NjkwMTg4MDAwMTAwMTI4IiwiUmVxdWVzdENvZGUiOiJCMDAwMDAwMDAwMDUiLCJSZWNlaXZlQ29kZSI6IkMwMDAwMDAwMDAwMiIsIkN1cnJDb2QiOiJDTlkiLCJQdXNoRXZlcyI6IjEiLCJWb3VEYXRlIjoiMjAyMjEwMTIiLCJDYWxsVXJsIjoiMTkyLjQ0LjIuOTc6MzEwMDMiLCJJc1N0b3JlIjoiMSIsIlZvdU5vIjoiMjAyMjExMDMwMzEiLCJBbnRpVGFtcGVyU2lnbiI6IjdlMGVmNGIxZDdjYWM0YzE1YjA3MGFmM2ZkYmI1NzRlZWQ1MWU5NjBiOTk4YThjNjdkYjgyODc2OTFkMTRlNzQifX0=";
System.out.println("原数据base64:"+Util.encodeBase64(Data.getBytes()));
String sign ="rNHjcF+QQezzrbtYRtBKSe7zyr304vtTBb+3rZHVYrzHHlW1DI6cDOdjyCdFkYQHiFsz/XfgrUIZqHA1kMgjUg==";
byte[] decode64sign = SYMUtil.base64Sign2DerSign(sign);
boolean pass = api.SYD_NakedVerifyAll(4,Data.getBytes() ,decode64sign, DN);
System.out.println("验签结果:"+pass);
}
}