Browse Source

密码服务平台接口优化

dev-V1.0.9
vincent 1 month ago
parent
commit
59d47f9be1
  1. 10
      zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/thirdparty/IPasswordPartyService.java
  2. 6
      zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/thirdparty/PasswordPartyDemo.java
  3. 26
      zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/service/thirdparty/impl/PasswordPartyServiceImpl.java

10
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);
}

6
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);

26
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);
}

Loading…
Cancel
Save