diff --git a/hutool-crypto/src/main/java/org/dromara/hutool/crypto/KeyUtil.java b/hutool-crypto/src/main/java/org/dromara/hutool/crypto/KeyUtil.java
index be4eb5a98..43784426e 100644
--- a/hutool-crypto/src/main/java/org/dromara/hutool/crypto/KeyUtil.java
+++ b/hutool-crypto/src/main/java/org/dromara/hutool/crypto/KeyUtil.java
@@ -64,6 +64,7 @@ public class KeyUtil {
public static final int DEFAULT_KEY_SIZE = 1024;
// region ----- generateKey
+
/**
* 生成 {@link SecretKey},仅用于对称加密和摘要算法密钥生成
*
@@ -196,7 +197,24 @@ public class KeyUtil {
}
// endregion
+ /**
+ * 检查{@link KeyPair} 是否为空,空的条件是:
+ *
+ * - keyPair本身为{@code null}
+ * - {@link KeyPair#getPrivate()}和{@link KeyPair#getPublic()}都为{@code null}
+ *
+ *
+ * @param keyPair 密钥对
+ * @return 是否为空
+ */
// region ----- keyPair
+ public static boolean isEmpty(final KeyPair keyPair) {
+ if (null == keyPair) {
+ return false;
+ }
+ return null != keyPair.getPrivate() || null != keyPair.getPublic();
+ }
+
/**
* 生成RSA私钥,仅用于非对称加密
* 采用PKCS#8规范,此规范定义了私钥信息语法和加密私钥语法
diff --git a/hutool-crypto/src/main/java/org/dromara/hutool/crypto/bc/ECKeyUtil.java b/hutool-crypto/src/main/java/org/dromara/hutool/crypto/bc/ECKeyUtil.java
index 040c614c4..864d88824 100644
--- a/hutool-crypto/src/main/java/org/dromara/hutool/crypto/bc/ECKeyUtil.java
+++ b/hutool-crypto/src/main/java/org/dromara/hutool/crypto/bc/ECKeyUtil.java
@@ -435,6 +435,9 @@ public class ECKeyUtil {
* @since 5.5.9
*/
public static ECPrivateKeyParameters decodePrivateKeyParams(final byte[] privateKeyBytes) {
+ if (null == privateKeyBytes) {
+ return null;
+ }
try {
// 尝试D值
return toSm2PrivateParams(privateKeyBytes);
@@ -468,6 +471,9 @@ public class ECKeyUtil {
* @since 5.5.9
*/
public static ECPublicKeyParameters decodePublicKeyParams(final byte[] publicKeyBytes) {
+ if(null == publicKeyBytes){
+ return null;
+ }
try {
// 尝试Q值
return toSm2PublicParams(publicKeyBytes);