From 080c705d720fe42b8eca9f09e4ff88b7ce002711 Mon Sep 17 00:00:00 2001 From: cheney Date: Tue, 21 Jun 2022 18:40:51 +0800 Subject: [PATCH] =?UTF-8?q?=E7=A1=AE=E8=AE=A4=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/racal/sunyard/main/SydApi4j.java | 14 ++++++++------ src/test/java/com/sunyard/sydapi/test/TestHT.java | 14 ++++++++++++++ 2 files changed, 22 insertions(+), 6 deletions(-) diff --git a/src/main/java/racal/sunyard/main/SydApi4j.java b/src/main/java/racal/sunyard/main/SydApi4j.java index dff557f..16e0f9d 100644 --- a/src/main/java/racal/sunyard/main/SydApi4j.java +++ b/src/main/java/racal/sunyard/main/SydApi4j.java @@ -2561,10 +2561,12 @@ public class SydApi4j implements SydApi { // 生成会话密钥 ret = SM2GenSessionKey(pk); - String ciperKey = new String( (byte[]) ret.get(SydApi.RET_CIPHER_KEY)); - String sessionKeyByLMK = new String( (byte[]) ret.get(SydApi.RET_SESSION_KEY )); + String ciperKey = ret.get(SydApi.RET_CIPHER_KEY).toString(); + String sessionKeyByLMK = (String) ret.get(SydApi.RET_SESSION_KEY ); + ret.put(SydApi.RET_SESSION_KEY , sessionKeyByLMK.getBytes() ); println("ciperKey=" + ciperKey); + println("sessionKeyByLMK=" + sessionKeyByLMK); // 加密数据 byte[] iv = new byte[32]; @@ -2573,7 +2575,7 @@ public class SydApi4j implements SydApi { byte[] enData = (byte[]) retWrap.get("msg_all"); // 组织格式 - ContentInfo cms = genCMSEnvelopedData(Util.hexString2Bytes(ciperKey), enData, + ContentInfo cms = genCMSEnvelopedData( Util.hexString2Bytes(ciperKey), enData, x509.getSerialNumber().toString(16) , dnToMap(issuser.getName() ) ); @@ -5142,14 +5144,14 @@ public class SydApi4j implements SydApi { } RetWrap rw = new RetWrap(); rw.put(SydApi.RET_CIPHER_KEY, - ((PacketSection) ret.get("key")).getBytes() + Util.bytes2HexString( ((PacketSection) ret.get("key")).getBytes() ) ); rw.put(SydApi.RET_SESSION_KEY, (((PacketSection) ret.get("lmkHead")).getString() + - ((PacketSection) ret.get("lmk")).getString()).getBytes() + ((PacketSection) ret.get("lmk")).getString()) ); - rw.put(SydApi.RET_KCV, ((PacketSection) ret.get("keyCheck")).getBytes()); + rw.put(SydApi.RET_KCV, ((PacketSection) ret.get("keyCheck")).getString()); return rw; } diff --git a/src/test/java/com/sunyard/sydapi/test/TestHT.java b/src/test/java/com/sunyard/sydapi/test/TestHT.java index 81aaeed..dd2665b 100644 --- a/src/test/java/com/sunyard/sydapi/test/TestHT.java +++ b/src/test/java/com/sunyard/sydapi/test/TestHT.java @@ -193,6 +193,20 @@ public class TestHT { 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";