From bb071ffe5d7f262e4ceddf2205200df0fc862cf4 Mon Sep 17 00:00:00 2001 From: chenyuehao Date: Tue, 8 Nov 2016 09:12:32 +0800 Subject: [PATCH] =?UTF-8?q?=E6=98=BE=E5=BC=8F=E6=8C=87=E5=AE=9A=E4=BA=86co?= =?UTF-8?q?nfigFilter=E4=B8=AD=E5=8A=A0=E8=A7=A3=E5=AF=86=E5=AF=B9?= =?UTF-8?q?=E8=B1=A1=E7=9A=84provide=EF=BC=88jdk=E9=BB=98=E8=AE=A4?= =?UTF-8?q?=E7=9A=84=EF=BC=89=E5=92=8Ccipher=E7=9A=84padding=E7=AE=97?= =?UTF-8?q?=E6=B3=95=E3=80=82=E4=BF=AE=E5=A4=8D=E4=BA=86=E5=BD=93=E7=B3=BB?= =?UTF-8?q?=E7=BB=9F=E4=B8=AD=E5=AD=98=E5=9C=A8=E5=A4=9A=E4=B8=AAkeySpec?= =?UTF-8?q?=E6=97=B6=EF=BC=88=E6=AF=94=E5=A6=82=E6=88=91=E4=BB=AC=E7=9A=84?= =?UTF-8?q?=E4=BA=A4=E6=98=93=E7=B3=BB=E7=BB=9F=E6=9C=89=E5=A4=9A=E5=A5=97?= =?UTF-8?q?=E5=AF=86=E9=92=A5=E6=9C=BA=E5=88=B6=EF=BC=8C=E5=8C=85=E6=8B=AC?= =?UTF-8?q?cfca=E5=92=8Cbc=E7=AD=89provider=EF=BC=89=EF=BC=8C=E4=BC=9A?= =?UTF-8?q?=E9=80=A0=E6=88=90configFilter=E5=9C=A8=E8=A7=A3=E5=AF=86?= =?UTF-8?q?=E6=97=B6=E7=94=9F=E6=88=90=E9=94=99=E8=AF=AF=E7=9A=84publicKey?= =?UTF-8?q?=EF=BC=8C=E4=BB=A5=E5=8F=8Acipher=E7=9A=84padding=E4=B8=8D?= =?UTF-8?q?=E4=B8=80=E8=87=B4=E9=97=AE=E9=A2=98=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../druid/filter/config/ConfigTools.java | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/alibaba/druid/filter/config/ConfigTools.java b/src/main/java/com/alibaba/druid/filter/config/ConfigTools.java index 158bb69742..cc83c367ee 100644 --- a/src/main/java/com/alibaba/druid/filter/config/ConfigTools.java +++ b/src/main/java/com/alibaba/druid/filter/config/ConfigTools.java @@ -23,6 +23,7 @@ import java.security.KeyFactory; import java.security.KeyPair; import java.security.KeyPairGenerator; import java.security.NoSuchAlgorithmException; +import java.security.NoSuchProviderException; import java.security.PrivateKey; import java.security.PublicKey; import java.security.SecureRandom; @@ -94,7 +95,7 @@ public class ConfigTools { X509EncodedKeySpec x509KeySpec = new X509EncodedKeySpec( publicKeyBytes); - KeyFactory keyFactory = KeyFactory.getInstance("RSA"); + KeyFactory keyFactory = KeyFactory.getInstance("RSA", "SunRsaSign"); return keyFactory.generatePublic(x509KeySpec); } catch (Exception e) { throw new IllegalArgumentException("Failed to get public key", e); @@ -118,7 +119,7 @@ public class ConfigTools { byte[] publicKeyBytes = out.toByteArray(); X509EncodedKeySpec spec = new X509EncodedKeySpec(publicKeyBytes); - KeyFactory factory = KeyFactory.getInstance("RSA"); + KeyFactory factory = KeyFactory.getInstance("RSA", "SunRsaSign"); return factory.generatePublic(spec); } catch (Exception e) { throw new IllegalArgumentException("Failed to get public key", e); @@ -129,7 +130,7 @@ public class ConfigTools { public static String decrypt(PublicKey publicKey, String cipherText) throws Exception { - Cipher cipher = Cipher.getInstance("RSA"); + Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding"); try { cipher.init(Cipher.DECRYPT_MODE, publicKey); } catch (InvalidKeyException e) { @@ -168,9 +169,9 @@ public class ConfigTools { public static String encrypt(byte[] keyBytes, String plainText) throws Exception { PKCS8EncodedKeySpec spec = new PKCS8EncodedKeySpec(keyBytes); - KeyFactory factory = KeyFactory.getInstance("RSA"); + KeyFactory factory = KeyFactory.getInstance("RSA", "SunRsaSign"); PrivateKey privateKey = factory.generatePrivate(spec); - Cipher cipher = Cipher.getInstance("RSA"); + Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding"); try { cipher.init(Cipher.ENCRYPT_MODE, privateKey); } catch (InvalidKeyException e) { @@ -189,10 +190,10 @@ public class ConfigTools { } public static byte[][] genKeyPairBytes(int keySize) - throws NoSuchAlgorithmException { + throws NoSuchAlgorithmException, NoSuchProviderException { byte[][] keyPairBytes = new byte[2][]; - KeyPairGenerator gen = KeyPairGenerator.getInstance("RSA"); + KeyPairGenerator gen = KeyPairGenerator.getInstance("RSA", "SunRsaSign"); gen.initialize(keySize, new SecureRandom()); KeyPair pair = gen.generateKeyPair(); @@ -203,7 +204,7 @@ public class ConfigTools { } public static String[] genKeyPair(int keySize) - throws NoSuchAlgorithmException { + throws NoSuchAlgorithmException, NoSuchProviderException { byte[][] keyPairBytes = genKeyPairBytes(keySize); String[] keyPairs = new String[2];