From 7ad972a8ec560459f268904d342e61821f6051e7 Mon Sep 17 00:00:00 2001 From: yechuan Date: Thu, 17 Aug 2023 14:23:14 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../work/xuye/common/utils/signature/RSASignatureService.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/common/src/main/java/work/xuye/common/utils/signature/RSASignatureService.java b/common/src/main/java/work/xuye/common/utils/signature/RSASignatureService.java index dc26589..7f96922 100644 --- a/common/src/main/java/work/xuye/common/utils/signature/RSASignatureService.java +++ b/common/src/main/java/work/xuye/common/utils/signature/RSASignatureService.java @@ -8,7 +8,6 @@ import work.xuye.common.enums.SignatureEnumGroup; import java.nio.charset.StandardCharsets; import java.security.GeneralSecurityException; import java.security.KeyFactory; -import java.security.PrivateKey; import java.security.Signature; import java.security.spec.PKCS8EncodedKeySpec; import java.security.spec.X509EncodedKeySpec; @@ -35,11 +34,12 @@ class RSASignatureService extends AbstractSignatureService { @Override public String signatureByPriKey(String content) throws GeneralSecurityException { if (signatureContext == null) { - throw new RuntimeException("未初始化公私钥信息"); + throw new RuntimeException("未初始化公私钥对信息"); + } + if (signatureContext.getSignature() == null) { + throw new RuntimeException("未初始化私钥信息"); } Signature signature = signatureContext.getSignature(); - PrivateKey priKey = signatureContext.getPriKey(); - signature.initSign(priKey); content = DigestUtils.md5DigestAsHex(content.getBytes(StandardCharsets.UTF_8)).toUpperCase(); signature.update(content.getBytes(StandardCharsets.UTF_8)); return Base64.encodeBase64String(signature.sign()); @@ -58,10 +58,12 @@ class RSASignatureService extends AbstractSignatureService { if (SignatureEnumGroup.KeyType.privateKey.equals(keyType)) { signatureContext.setPriKey(keyFactory.generatePrivate(new PKCS8EncodedKeySpec(encodedKey))); + signatureContext.getSignature().initSign(signatureContext.getPriKey()); } else if (SignatureEnumGroup.KeyType.publicKey.equals(keyType)) { signatureContext.setPubKey(keyFactory.generatePublic(new X509EncodedKeySpec(encodedKey))); } + }