From 59d47f9be1463349c601349db215f0ce814cc0ed Mon Sep 17 00:00:00 2001 From: vincent Date: Wed, 23 Sep 2026 16:36:13 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AF=86=E7=A0=81=E6=9C=8D=E5=8A=A1=E5=B9=B3?= =?UTF-8?q?=E5=8F=B0=E6=8E=A5=E5=8F=A3=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../thirdparty/IPasswordPartyService.java | 10 +++---- .../service/thirdparty/PasswordPartyDemo.java | 6 ++--- .../impl/PasswordPartyServiceImpl.java | 26 ++++++------------- 3 files changed, 14 insertions(+), 28 deletions(-) diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/thirdparty/IPasswordPartyService.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/thirdparty/IPasswordPartyService.java index 9814505a..94177b3c 100644 --- a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/thirdparty/IPasswordPartyService.java +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/thirdparty/IPasswordPartyService.java @@ -21,22 +21,19 @@ public interface IPasswordPartyService { /** * HSM - 对称加密 * - * @param key 外部密钥(keyIndex为0时生效,Hex 16进制) - * @param iv IV值,CBC/CFB/OFB模式时必传(Hex 16进制) * @param inputData 加密原文(Hex 16进制) * @return 对称加密结果 */ - SymmetryEncryptVo symmetryEncrypt(String key, String iv, String inputData); + SymmetryEncryptVo symmetryEncrypt( String inputData); /** * HSM - 对称解密 * - * @param key 外部密钥(keyIndex为0时生效,Hex 16进制) * @param iv IV值,CBC/CFB/OFB模式时必传(Hex 16进制) * @param inputData 解密密文(Hex 16进制) * @return 对称解密结果 */ - SymmetryEncryptVo symmetryDecrypt(String key, String iv, String inputData); + SymmetryEncryptVo symmetryDecrypt(String iv, String inputData); /** * HSM - SM2签名 @@ -76,9 +73,8 @@ public interface IPasswordPartyService { /** * HSM - HMAC摘要 * - * @param key 密钥,非必传(Hex 16进制类型) * @param inputData 明文摘要(Hex 16进制类型,必填) * @return HMAC值(Hex 16进制类型) */ - String hmacWithIndex(String key, String inputData); + String hmacWithIndex(String inputData); } diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/thirdparty/PasswordPartyDemo.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/thirdparty/PasswordPartyDemo.java index 722141f5..db56e322 100644 --- a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/thirdparty/PasswordPartyDemo.java +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/thirdparty/PasswordPartyDemo.java @@ -78,12 +78,12 @@ public class PasswordPartyDemo { System.out.println("----- 2. 对称加密 + 对称解密 -----"); String plainHex = "31323334353637383132333435363738"; - SymmetryEncryptVo encryptResult = service.symmetryEncrypt(null, null, plainHex); + SymmetryEncryptVo encryptResult = service.symmetryEncrypt(plainHex); System.out.println("对称加密原文: " + plainHex); System.out.println("对称加密密文: " + encryptResult.getOutData()); assertNotBlank("encryptOutData", encryptResult.getOutData()); - SymmetryEncryptVo decryptResult = service.symmetryDecrypt(null, null, encryptResult.getOutData()); + SymmetryEncryptVo decryptResult = service.symmetryDecrypt(null, encryptResult.getOutData()); System.out.println("对称解密结果: " + decryptResult.getOutData()); assertNotBlank("decryptOutData", decryptResult.getOutData()); @@ -143,7 +143,7 @@ public class PasswordPartyDemo { System.out.println("----- 5. HMAC摘要 -----"); String inputDataHex = "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"; - String hmac = service.hmacWithIndex(null, inputDataHex); + String hmac = service.hmacWithIndex(inputDataHex); System.out.println("HMAC输入摘要: " + inputDataHex); System.out.println("HMAC输出值: " + hmac); assertNotBlank("hmac", hmac); diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/thirdparty/impl/PasswordPartyServiceImpl.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/thirdparty/impl/PasswordPartyServiceImpl.java index 83a4bea8..62a39f13 100644 --- a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/thirdparty/impl/PasswordPartyServiceImpl.java +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/thirdparty/impl/PasswordPartyServiceImpl.java @@ -25,7 +25,7 @@ public class PasswordPartyServiceImpl implements IPasswordPartyService { private final PasswordPartyConfig passwordPartyConfig; private static final int KEY_INDEX = 5; - private static final String ALG_TYPE = "SM4"; + private static final String ALG_TYPE = "SM4-CBC"; /** * 生成随机数 @@ -37,7 +37,6 @@ public class PasswordPartyServiceImpl implements IPasswordPartyService { public String generateRandom(int length) { JSONObject params = new JSONObject(); params.put("length", length); - JSONObject data = callHsmApi("/hsm/api/GenerateRandom", params, "生成随机数"); return data.getString("random"); } @@ -45,14 +44,13 @@ public class PasswordPartyServiceImpl implements IPasswordPartyService { /** * 对称加密 * - * @param key 外部密钥,keyIndex为0时生效(Hex 16进制类型) - * @param iv IV值,CBC/CFB/OFB模式时必传(Hex 16进制类型) * @param inputData 加密原文(Hex 16进制类型) * @return 对称加密结果 */ @Override - public SymmetryEncryptVo symmetryEncrypt(String key, String iv, String inputData) { - JSONObject params = buildSymmetryParams(key, iv, inputData); + public SymmetryEncryptVo symmetryEncrypt(String inputData) { + String iv = generateRandom(16); + JSONObject params = buildSymmetryParams(iv, inputData); JSONObject data = callHsmApi("/hsm/api/symmetryEncrypt", params, "对称加密"); return buildSymmetryEncryptVo(data); @@ -61,14 +59,13 @@ public class PasswordPartyServiceImpl implements IPasswordPartyService { /** * 对称解密 * - * @param key 外部密钥,keyIndex为0时生效(Hex 16进制类型) * @param iv IV值,CBC/CFB/OFB模式时必传(Hex 16进制类型) * @param inputData 解密原文(Hex 16进制类型) * @return 对称解密结果 */ @Override - public SymmetryEncryptVo symmetryDecrypt(String key, String iv, String inputData) { - JSONObject params = buildSymmetryParams(key, iv, inputData); + public SymmetryEncryptVo symmetryDecrypt(String iv, String inputData) { + JSONObject params = buildSymmetryParams(iv, inputData); JSONObject data = callHsmApi("/hsm/api/symmetryDecrypt", params, "对称解密"); return buildSymmetryEncryptVo(data); @@ -148,17 +145,13 @@ public class PasswordPartyServiceImpl implements IPasswordPartyService { /** * HMAC摘要 * - * @param key 密钥,非必传(Hex 16进制类型) * @param inputData 明文摘要(Hex 16进制类型,必填) * @return HMAC值(Hex 16进制类型) */ @Override - public String hmacWithIndex(String key, String inputData) { + public String hmacWithIndex(String inputData) { JSONObject params = new JSONObject(); params.put("keyIndex", KEY_INDEX); - if (key != null) { - params.put("key", key); - } params.put("algType", "SM3"); params.put("inputData", inputData); @@ -169,13 +162,10 @@ public class PasswordPartyServiceImpl implements IPasswordPartyService { /** * 构建对称加密/解密的公共请求参数 */ - private JSONObject buildSymmetryParams(String key, String iv, String inputData) { + private JSONObject buildSymmetryParams(String iv, String inputData) { JSONObject params = new JSONObject(); params.put("keyIndex", KEY_INDEX); params.put("algType", ALG_TYPE); - if (key != null) { - params.put("key", key); - } if (iv != null) { params.put("iv", iv); }