ソースを参照

fix JSONUtil.isJson

Looly 5 年 前
コミット
1a7812a281

+ 4 - 1
CHANGELOG.md

@@ -3,10 +3,13 @@
 
 -------------------------------------------------------------------------------------------------------------
 
-# 5.5.9 (2021-01-30)
+# 5.5.9 (2021-02-03)
 
 ### 新特性
+* 【crypto 】     PemUtil.readPemKey支持EC(pr#1366@Github)
+
 ### Bug修复
+* 【json   】     JSONUtil.isJson方法改变trim策略,解决特殊空白符导致判断失败问题
 
 -------------------------------------------------------------------------------------------------------------
 

+ 9 - 1
hutool-crypto/src/main/java/cn/hutool/crypto/PemUtil.java

@@ -63,8 +63,16 @@ public class PemUtil {
 		final PemObject object = readPemObject(keyStream);
 		final String type = object.getType();
 		if (StrUtil.isNotBlank(type)) {
-			if (type.endsWith("PRIVATE KEY")) {
+			//private
+			if (type.endsWith("EC PRIVATE KEY")) {
+				return KeyUtil.generatePrivateKey("EC", object.getContent());
+			}if (type.endsWith("PRIVATE KEY")) {
 				return KeyUtil.generateRSAPrivateKey(object.getContent());
+			}
+
+			// public
+			if (type.endsWith("EC PUBLIC KEY")) {
+				return KeyUtil.generatePublicKey("EC", object.getContent());
 			} else if (type.endsWith("PUBLIC KEY")) {
 				return KeyUtil.generateRSAPublicKey(object.getContent());
 			} else if (type.endsWith("CERTIFICATE")) {

+ 9 - 3
hutool-crypto/src/test/java/cn/hutool/crypto/test/PemUtilTest.java

@@ -17,7 +17,7 @@ public class PemUtilTest {
 		PrivateKey privateKey = PemUtil.readPemPrivateKey(ResourceUtil.getStream("test_private_key.pem"));
 		Assert.assertNotNull(privateKey);
 	}
-	
+
 	@Test
 	public void readPublicKeyTest() {
 		PublicKey publicKey = PemUtil.readPemPublicKey(ResourceUtil.getStream("test_public_key.csr"));
@@ -34,12 +34,18 @@ public class PemUtilTest {
 	public void validateKey() {
 		PrivateKey privateKey = PemUtil.readPemPrivateKey(ResourceUtil.getStream("test_private_key.pem"));
 		PublicKey publicKey = PemUtil.readPemPublicKey(ResourceUtil.getStream("test_public_key.csr"));
-		
+
 		RSA rsa = new RSA(privateKey, publicKey);
 		String str = "你好,Hutool";//测试字符串
-		
+
 		String encryptStr = rsa.encryptBase64(str, KeyType.PublicKey);
 		String decryptStr = rsa.decryptStr(encryptStr, KeyType.PrivateKey);
 		Assert.assertEquals(str, decryptStr);
 	}
+
+	@Test
+	public void readECPrivateKeyTest() {
+		PrivateKey privateKey = PemUtil.readPemPrivateKey(ResourceUtil.getStream("test_ec_private_key.pem"));
+		Assert.assertNotNull(privateKey);
+	}
 }

+ 5 - 0
hutool-crypto/src/test/resources/test_ec_private_key.pem

@@ -0,0 +1,5 @@
+-----BEGIN EC PRIVATE KEY-----
+MHcCAQEEIKB89IhhSy9WrtQS7TWO5Yqyv5a3DnogWYUhb3TbzjnWoAoGCCqBHM9V
+AYItoUQDQgAE3LRuqCM697gL3jPhw98eGfTDcJsuJr6H1nE4VkgdtBdX3So2lC6m
+UGEnWeRZuh8HnzCRobcu02Bgv7CVR5Iigg==
+-----END EC PRIVATE KEY-----

+ 2 - 2
hutool-json/src/main/java/cn/hutool/json/JSONUtil.java

@@ -801,7 +801,7 @@ public final class JSONUtil {
 		if (StrUtil.isBlank(str)) {
 			return false;
 		}
-		return StrUtil.isWrap(str.trim(), '{', '}');
+		return StrUtil.isWrap(StrUtil.trim(str), '{', '}');
 	}
 
 	/**
@@ -815,7 +815,7 @@ public final class JSONUtil {
 		if (StrUtil.isBlank(str)) {
 			return false;
 		}
-		return StrUtil.isWrap(str.trim(), '[', ']');
+		return StrUtil.isWrap(StrUtil.trim(str), '[', ']');
 	}
 
 	/**

+ 1 - 1
hutool-json/src/test/java/cn/hutool/json/JSONUtilTest.java

@@ -179,4 +179,4 @@ public class JSONUtilTest {
 				"    \"test\": \"\\\\地库地库\",\n" +
 				"}");
 	}
-}
+}