|
@@ -0,0 +1,127 @@
|
|
|
|
|
+package cc.iotkit.util;
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+import org.apache.commons.codec.binary.Base64;
|
|
|
|
|
+
|
|
|
|
|
+import javax.crypto.Cipher;
|
|
|
|
|
+import java.security.KeyFactory;
|
|
|
|
|
+import java.security.interfaces.RSAPrivateKey;
|
|
|
|
|
+import java.security.spec.PKCS8EncodedKeySpec;
|
|
|
|
|
+
|
|
|
|
|
+public class RsaUtil {
|
|
|
|
|
+ private static final String CHARSET_NAME = "utf-8";
|
|
|
|
|
+ private static final String TYPE = "RSA";
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * RSA私钥解密
|
|
|
|
|
+ *
|
|
|
|
|
+ * @param str 加密字符串
|
|
|
|
|
+ * @param privateKey 私钥
|
|
|
|
|
+ * @return 铭文
|
|
|
|
|
+ * @throws Exception 解密过程中的异常信息
|
|
|
|
|
+ */
|
|
|
|
|
+ public static String decrypt(String str, String privateKey) throws Exception {
|
|
|
|
|
+ //64位解码加密后的字符串
|
|
|
|
|
+ byte[] inputByte = Base64.decodeBase64(str.getBytes(CHARSET_NAME));
|
|
|
|
|
+ //base64编码的私钥
|
|
|
|
|
+ byte[] decoded = Base64.decodeBase64(privateKey);
|
|
|
|
|
+ RSAPrivateKey priKey = (RSAPrivateKey) KeyFactory.getInstance(TYPE).generatePrivate(new PKCS8EncodedKeySpec(decoded));
|
|
|
|
|
+ //RSA解密
|
|
|
|
|
+ Cipher cipher = Cipher.getInstance(TYPE);
|
|
|
|
|
+ cipher.init(Cipher.DECRYPT_MODE, priKey);
|
|
|
|
|
+ String outStr = new String(cipher.doFinal(inputByte));
|
|
|
|
|
+ return outStr;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 获取私钥
|
|
|
|
|
+ */
|
|
|
|
|
+ public static String getPriKey() {
|
|
|
|
|
+ String privateKey = "MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCzS/MmTTM7T9li\n" +
|
|
|
|
|
+ "5CUlwr6gmJIXbCSoYxbeDKnl8Ng59RM9G9Eaw7+NdDX/LMhMqJtIlMJMgq2Xngl9\n" +
|
|
|
|
|
+ "1VMYkzhPrlWIjeYVo1ptXTWd8CwlZxOJpE+xDnrwkIGI2hAC6jqhEvQA3BAcGNUg\n" +
|
|
|
|
|
+ "HtmOw0Jfn64dYsPvOh9OAk6OxSbhsHocf8akxRIAvpPJa6Z5R6t1AKBvzDuRo068\n" +
|
|
|
|
|
+ "xD4fq6BtCVUGJ+wTJXSt2g5haNVaFw2ywZUOWjDhE1Yvwbx+M7X8PKI/mA3rhJcE\n" +
|
|
|
|
|
+ "6U8yArpNEZssJ0h73yN5qPWyT3Srrg2dJn2vu+tHPujLt3YC1mLdK3vK70bdmal3\n" +
|
|
|
|
|
+ "Z6a+92/9AgMBAAECggEAQNSYkePeP3cK4qAd8n5tUUJ5qLB4vM4/iYDIuhURCjvc\n" +
|
|
|
|
|
+ "ff8d5/CZxbscfy0hK97XbzIi42lo/WauheppxnwNI3qlAOBWLsLHQr4uUfJy8/9G\n" +
|
|
|
|
|
+ "aEGacyoKOAv4WpSGr5ckJfPleJ4Z0R8FiTy+a8mcqVjiq0t4D3tTsHBTGXqeKYJ8\n" +
|
|
|
|
|
+ "WzfYvnrRU6U278/5MxXwfWMcrNQgNE2d+U9du491PM2mDiCPKrZbhaFxUKYiOcnq\n" +
|
|
|
|
|
+ "aKk/oiLvI+cJi4ualgRrllsbAQYesccv37fvKgg5UbLUIGedpu+JcxQYgdDTOAgQ\n" +
|
|
|
|
|
+ "gdiuchSQ967KOEO0tjC2SHWCib8zsiSFAWaWqnufQQKBgQDbMQSwI6EEJLyrcyOw\n" +
|
|
|
|
|
+ "BJRC353oeyBH4ARYo15kJ6nerDaSKMNJDuH81fNuFdRu6/b931IJXvS5l5in+Skw\n" +
|
|
|
|
|
+ "scnh1SlFBNdD0sYiWu56QAsQGTTOADr/sjloLbCM62tTC2jqnBjU3+DiMhu6jLPB\n" +
|
|
|
|
|
+ "pK82kpo4i8LkMuukA9xsLglazQKBgQDRZ91weAGVbARiz5x2zmsvE0nqAccnVq7I\n" +
|
|
|
|
|
+ "6StaOTOElV/nljoMR1hIeNsh3bf0TrrjmlAYQtoXvx9hCm5vMjMgVpR6eNN7VSqv\n" +
|
|
|
|
|
+ "OnZCC6ytU1SImiCzPCslK70reHUWHI5gKUKia0oyylx97cxDd1dWtokQLY5woZ/e\n" +
|
|
|
|
|
+ "IQuZy1bJ8QKBgB8CuF8TK1yite6rw4jLnQ45BOY3RUHl97dypZAV7HqMcswK6FYV\n" +
|
|
|
|
|
+ "vPNAcchJXlyzFaalSb35qTX4tKhPH/y7qoxA1C3nmW0HDPEfXE3/cZE9f7MFZVN3\n" +
|
|
|
|
|
+ "q5eJn0jQpcaB/r3yh7DWW8KkxDeIYIYs/n0CEL+fRltyuNPjl/PWL4yhAoGATj96\n" +
|
|
|
|
|
+ "fnFJXjVbujSL6dUeNhwGDZwWd/urGkYOvgsL1iofCSGYlUf/lC0c7R21hGP679uU\n" +
|
|
|
|
|
+ "vEwWxLLVHeTQ+VoPwrC3kMAffkGHzqyQzgMgxi+SMe0t9Ouxz5T1fg3n6phHF2Wz\n" +
|
|
|
|
|
+ "kY93zVzSjPfT0Q4CI9PXiaUMScgLPeypMhHKX3ECgYB+erIbGCLFaROSLrD16FmR\n" +
|
|
|
|
|
+ "uABXwWSk8P5vNpwEyNMN0Yx/kLlkPZq1wjD0N6JiER6W29qNgIhUL/ufecU0pmHy\n" +
|
|
|
|
|
+ "FnPO5sues+n+ZZWJ8i6qDsf3SO4KzmDfCndZrnXV7ivQc4ZLj1KejfiVEF2xs3k1\n" +
|
|
|
|
|
+ "T+g8GH4zGZd019IIiu6zHQ==";
|
|
|
|
|
+ return privateKey;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 获取私钥
|
|
|
|
|
+ */
|
|
|
|
|
+ public static String getPublicKey() {
|
|
|
|
|
+ String publicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAs0vzJk0zO0/ZYuQlJcK+\n" +
|
|
|
|
|
+ "oJiSF2wkqGMW3gyp5fDYOfUTPRvRGsO/jXQ1/yzITKibSJTCTIKtl54JfdVTGJM4\n" +
|
|
|
|
|
+ "T65ViI3mFaNabV01nfAsJWcTiaRPsQ568JCBiNoQAuo6oRL0ANwQHBjVIB7ZjsNC\n" +
|
|
|
|
|
+ "X5+uHWLD7zofTgJOjsUm4bB6HH/GpMUSAL6TyWumeUerdQCgb8w7kaNOvMQ+H6ug\n" +
|
|
|
|
|
+ "bQlVBifsEyV0rdoOYWjVWhcNssGVDlow4RNWL8G8fjO1/DyiP5gN64SXBOlPMgK6\n" +
|
|
|
|
|
+ "TRGbLCdIe98jeaj1sk90q64NnSZ9r7vrRz7oy7d2AtZi3St7yu9G3Zmpd2emvvdv\n" +
|
|
|
|
|
+ "/QIDAQAB";
|
|
|
|
|
+ return publicKey;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ public static void main(String[] args) throws Exception {
|
|
|
|
|
+ String publicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAs0vzJk0zO0/ZYuQlJcK+\n" +
|
|
|
|
|
+ "oJiSF2wkqGMW3gyp5fDYOfUTPRvRGsO/jXQ1/yzITKibSJTCTIKtl54JfdVTGJM4\n" +
|
|
|
|
|
+ "T65ViI3mFaNabV01nfAsJWcTiaRPsQ568JCBiNoQAuo6oRL0ANwQHBjVIB7ZjsNC\n" +
|
|
|
|
|
+ "X5+uHWLD7zofTgJOjsUm4bB6HH/GpMUSAL6TyWumeUerdQCgb8w7kaNOvMQ+H6ug\n" +
|
|
|
|
|
+ "bQlVBifsEyV0rdoOYWjVWhcNssGVDlow4RNWL8G8fjO1/DyiP5gN64SXBOlPMgK6\n" +
|
|
|
|
|
+ "TRGbLCdIe98jeaj1sk90q64NnSZ9r7vrRz7oy7d2AtZi3St7yu9G3Zmpd2emvvdv\n" +
|
|
|
|
|
+ "/QIDAQAB";
|
|
|
|
|
+ String privateKey = "MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCzS/MmTTM7T9li\n" +
|
|
|
|
|
+ "5CUlwr6gmJIXbCSoYxbeDKnl8Ng59RM9G9Eaw7+NdDX/LMhMqJtIlMJMgq2Xngl9\n" +
|
|
|
|
|
+ "1VMYkzhPrlWIjeYVo1ptXTWd8CwlZxOJpE+xDnrwkIGI2hAC6jqhEvQA3BAcGNUg\n" +
|
|
|
|
|
+ "HtmOw0Jfn64dYsPvOh9OAk6OxSbhsHocf8akxRIAvpPJa6Z5R6t1AKBvzDuRo068\n" +
|
|
|
|
|
+ "xD4fq6BtCVUGJ+wTJXSt2g5haNVaFw2ywZUOWjDhE1Yvwbx+M7X8PKI/mA3rhJcE\n" +
|
|
|
|
|
+ "6U8yArpNEZssJ0h73yN5qPWyT3Srrg2dJn2vu+tHPujLt3YC1mLdK3vK70bdmal3\n" +
|
|
|
|
|
+ "Z6a+92/9AgMBAAECggEAQNSYkePeP3cK4qAd8n5tUUJ5qLB4vM4/iYDIuhURCjvc\n" +
|
|
|
|
|
+ "ff8d5/CZxbscfy0hK97XbzIi42lo/WauheppxnwNI3qlAOBWLsLHQr4uUfJy8/9G\n" +
|
|
|
|
|
+ "aEGacyoKOAv4WpSGr5ckJfPleJ4Z0R8FiTy+a8mcqVjiq0t4D3tTsHBTGXqeKYJ8\n" +
|
|
|
|
|
+ "WzfYvnrRU6U278/5MxXwfWMcrNQgNE2d+U9du491PM2mDiCPKrZbhaFxUKYiOcnq\n" +
|
|
|
|
|
+ "aKk/oiLvI+cJi4ualgRrllsbAQYesccv37fvKgg5UbLUIGedpu+JcxQYgdDTOAgQ\n" +
|
|
|
|
|
+ "gdiuchSQ967KOEO0tjC2SHWCib8zsiSFAWaWqnufQQKBgQDbMQSwI6EEJLyrcyOw\n" +
|
|
|
|
|
+ "BJRC353oeyBH4ARYo15kJ6nerDaSKMNJDuH81fNuFdRu6/b931IJXvS5l5in+Skw\n" +
|
|
|
|
|
+ "scnh1SlFBNdD0sYiWu56QAsQGTTOADr/sjloLbCM62tTC2jqnBjU3+DiMhu6jLPB\n" +
|
|
|
|
|
+ "pK82kpo4i8LkMuukA9xsLglazQKBgQDRZ91weAGVbARiz5x2zmsvE0nqAccnVq7I\n" +
|
|
|
|
|
+ "6StaOTOElV/nljoMR1hIeNsh3bf0TrrjmlAYQtoXvx9hCm5vMjMgVpR6eNN7VSqv\n" +
|
|
|
|
|
+ "OnZCC6ytU1SImiCzPCslK70reHUWHI5gKUKia0oyylx97cxDd1dWtokQLY5woZ/e\n" +
|
|
|
|
|
+ "IQuZy1bJ8QKBgB8CuF8TK1yite6rw4jLnQ45BOY3RUHl97dypZAV7HqMcswK6FYV\n" +
|
|
|
|
|
+ "vPNAcchJXlyzFaalSb35qTX4tKhPH/y7qoxA1C3nmW0HDPEfXE3/cZE9f7MFZVN3\n" +
|
|
|
|
|
+ "q5eJn0jQpcaB/r3yh7DWW8KkxDeIYIYs/n0CEL+fRltyuNPjl/PWL4yhAoGATj96\n" +
|
|
|
|
|
+ "fnFJXjVbujSL6dUeNhwGDZwWd/urGkYOvgsL1iofCSGYlUf/lC0c7R21hGP679uU\n" +
|
|
|
|
|
+ "vEwWxLLVHeTQ+VoPwrC3kMAffkGHzqyQzgMgxi+SMe0t9Ouxz5T1fg3n6phHF2Wz\n" +
|
|
|
|
|
+ "kY93zVzSjPfT0Q4CI9PXiaUMScgLPeypMhHKX3ECgYB+erIbGCLFaROSLrD16FmR\n" +
|
|
|
|
|
+ "uABXwWSk8P5vNpwEyNMN0Yx/kLlkPZq1wjD0N6JiER6W29qNgIhUL/ufecU0pmHy\n" +
|
|
|
|
|
+ "FnPO5sues+n+ZZWJ8i6qDsf3SO4KzmDfCndZrnXV7ivQc4ZLj1KejfiVEF2xs3k1\n" +
|
|
|
|
|
+ "T+g8GH4zGZd019IIiu6zHQ==";
|
|
|
|
|
+ String encodeText = "hello world";
|
|
|
|
|
+// String encodeText = encrypt(text, publicKey);
|
|
|
|
|
+ System.out.println("加密后:" + encodeText);
|
|
|
|
|
+ System.out.println("解密后:" + decrypt(encodeText, privateKey));
|
|
|
|
|
+
|
|
|
|
|
+ String us = "P17W84IQf5nd56TAO4LLZrt5J3odi9+sjhy9vMepEv9VzzUKznqChEh3vfA1bbYIE5ariIng9LUX7NXv4jvIuNnjvsgToFfXsJkEjH7sGc+mA0uh7iS+vM0QG1tmo5pF058BGyMsXmAk6QCYlSQfvpaz7qwbMg4do+6a1RNOx3JuWsFttPTeYmLpsirmjuMw5E/gJzvJhKGBNQi17jNNfJ8HxF5syd8rIxvpKMm9Dk+Ur90xx8Nmna6XJEDEYnZ4rFoKVzCdhyg/YGwB55TXhIrabU6xNcDRi528gbpFioKGEYW3qzl6A8mRD7Y4VL8puWA1xlOH5o/f78ZRWah/kQ==";
|
|
|
|
|
+ String ps = "iyszOtAof873CTOhlDsIzl+n83ejC3wqKRZXOXFkNaX1lFqlSHMBmZeTn5jjGWp77T8YGK+XvNCEuQURZgPHXJ9DN4Auvt8oRbscwUFS0I47uppEOuy+3FhIhgbX4oGwaJ5R80fP/bWz89qxuuD/01IIkJoeb/cHo8roI8WjR9UxU3S79Sf2EZW0VV/22gJMhc+BzSONm8RvtxFn2NyUi4R6bRSeTXkNNZ4vOSos3dl0uoS0Jk8hTAcEjLZ0hvDsfJKuMI1c0bDGWXk5UbvanFbccHIRhiHj8d8ejAf/phOrlufqk5ZSbvEzKiTHdh5pn6DYcCioYk4fUh7SnrXAxg==";
|
|
|
|
|
+ System.out.println("解密后:" + decrypt(us, privateKey));
|
|
|
|
|
+ System.out.println("解密后:" + decrypt(ps, privateKey));
|
|
|
|
|
+ }
|
|
|
|
|
+}
|