diff --git a/CHANGELOG.md b/CHANGELOG.md index 9c28be8f5..c0cfb0679 100644 --- a/CHANGELOG.md +++ b/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策略,解决特殊空白符导致判断失败问题 ------------------------------------------------------------------------------------------------------------- diff --git a/hutool-crypto/src/main/java/cn/hutool/crypto/PemUtil.java b/hutool-crypto/src/main/java/cn/hutool/crypto/PemUtil.java index 3bc94465d..e9271929b 100644 --- a/hutool-crypto/src/main/java/cn/hutool/crypto/PemUtil.java +++ b/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")) { diff --git a/hutool-crypto/src/test/java/cn/hutool/crypto/test/PemUtilTest.java b/hutool-crypto/src/test/java/cn/hutool/crypto/test/PemUtilTest.java index 1f92f60fb..990c06d8c 100644 --- a/hutool-crypto/src/test/java/cn/hutool/crypto/test/PemUtilTest.java +++ b/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); + } } diff --git a/hutool-crypto/src/test/resources/test_ec_private_key.pem b/hutool-crypto/src/test/resources/test_ec_private_key.pem new file mode 100644 index 000000000..8ae4ed315 --- /dev/null +++ b/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----- diff --git a/hutool-json/src/main/java/cn/hutool/json/JSONUtil.java b/hutool-json/src/main/java/cn/hutool/json/JSONUtil.java index 617d94038..238fe2321 100644 --- a/hutool-json/src/main/java/cn/hutool/json/JSONUtil.java +++ b/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), '[', ']'); } /** diff --git a/hutool-json/src/test/java/cn/hutool/json/JSONUtilTest.java b/hutool-json/src/test/java/cn/hutool/json/JSONUtilTest.java index cdbf9b51f..5348ab732 100644 --- a/hutool-json/src/test/java/cn/hutool/json/JSONUtilTest.java +++ b/hutool-json/src/test/java/cn/hutool/json/JSONUtilTest.java @@ -179,4 +179,4 @@ public class JSONUtilTest { " \"test\": \"\\\\地库地库\",\n" + "}"); } -} \ No newline at end of file +}