package com.nuvole.four.config; import javax.crypto.Cipher; import java.security.KeyFactory; import java.security.NoSuchAlgorithmException; import java.security.PrivateKey; import java.security.spec.InvalidKeySpecException; import java.security.spec.PKCS8EncodedKeySpec; import java.util.Base64; public class RsaDecryptor { /** * 读取私钥文件,生成RSA私钥 * * @return RSA私钥 * @throws NoSuchAlgorithmException * @throws InvalidKeySpecException */ private static PrivateKey getRsaPrivateKey() throws NoSuchAlgorithmException, InvalidKeySpecException { String privateKeyContent = "-----BEGIN PRIVATE KEY-----\n" + "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCDpJ23UWIqAMiv\n" + "JwdrzEOS5WbbUvFlFxiW0Q4MDzwT4zg63gq6bk1BIi3v/mVchoDEhrr4bgSDqVjN\n" + "wfI4gfVZQ0tVlrfMayGi5MvjCdjbPRmeGBkBqKmB3WMkzXxVR0dHz1KFgc3Tt8Av\n" + "tpwK8GDzTavBXF/NSm2k9PL0BKcJuWmQS5Id+MGHxQMjmKJOXERBqDsFF2ghMaRk\n" + "lj5hvHCRcJXLehTzbWERfOV2t+teSs6K8CmCxoJjLdhNna3CEXS1fhfQ7UKBNydD\n" + "EqTDgG5ws2KrazhiE6QUcHSPUuuTXMVQuMusG63cyKRJazf0qqAQM3WjMInI56ui\n" + "rn1yvdUbAgMBAAECggEANZJSFH3sAsfa41xwqq+veCIe33Y7gjYJ7aYZn1K70iQP\n" + "h/VATGoCylTMePP/781UraVehSbQc3wBBYq9tb09SRwXljcFiQy33YBacIRbWazd\n" + "tfZ8hq5KfOzJIfr1dAbTvSdjn60ZQ+VtMn2PtuvnqFudX8zlt7doM07zZ9ZU26Gg\n" + "9W67OlGpxDxfWryUWI//tkCrguORceurhydByhYdRqJlDwc3xAgctyGXBfY9Plp0\n" + "m3VWaWvgDBJ54d0MpVleQVOufWRH85Jyj+7ZIxmn53oh3iPx6samq26FPiwbl4se\n" + "q82waM4wOeunJDHSLNjuJJSWwR3MovHrzwnc4XmaoQKBgQDBQRDIODW6MYPXklin\n" + "+sotoDe1raZRZCenAhpNO5pMcpS955SKkhi/NU/8mSEGpxw+fZPL0/gtnn2aHoXU\n" + "/z5pjhSBbYPJXrt3PeuOqKfNEdBXQx56JNyZw7UF3po/SkO2hJAwlQy2WYanhx4b\n" + "+5sYLVtHKWAmIRDmb+EtQ225EwKBgQCuYoufmFk62FYPpLeHtLAhSGqmDvrKPavj\n" + "cNsJsJZeltjQI9Juap+Xez5qlovS87vnyTqjEysUcAqMgcSthjK/VgFxNiL8Y93J\n" + "ORGTI6tkI306DhKmj8Jc02sB1VF4DV4IYGsQ3NOPP+AWrV3YlTj4Cw5wusX8jq9K\n" + "9Ubfiia82QKBgBGi+4IaRyT38d1RmM+zvpHNZmgpMd2Js2i1c2sK/njtmA+Au/it\n" + "fp6soeEepHnz9ErrsPpQHP0k0renA3W92ZdOhSaOtRFCmP834nCBidbYQlhEYtqo\n" + "1I0f5Dxl5VPTVjyo+nPEloVpxDUzypapLq1VLlhfOUwhhmZRXY6A8dmLAoGBAKtP\n" + "yBZq1g3HBRStHldEnFq2B39G6/zOBRSUg7nLLo2R50DiUBGE0W9A9ZpEduwv4QLd\n" + "XqthY0ranqJVwV8unJ/238fWBRypBvJtC+Tef7sKWjU0KgJS6//A+jh81WH4z82u\n" + "2r9gEL2DZKMigTUJs0OJqQ/5jBKGIZKjzpI/57pRAoGAGoaweJrzbYuFp7JSJw/W\n" + "nKsnDUAI14AN5DI4UlVt78ZESj/D7ArKtDLMkIDrLRk/NofDRQy9YdEwmw7Jjxa9\n" + "j8NF0ll01dV3Sr7SXqmkVtqfAvt58tdXwxXdsUvLV7+otZfAzinY7959MUoPc8gb\n" + "4kmHYWNzm1vJyr/QIapo94g=\n" + "-----END PRIVATE KEY-----\n"; privateKeyContent = privateKeyContent.replaceAll("\\n", "").replace("-----BEGIN PRIVATE KEY-----", "").replace("-----END PRIVATE KEY-----", ""); KeyFactory kf = KeyFactory.getInstance("RSA"); PKCS8EncodedKeySpec keySpecPKCS8 = new PKCS8EncodedKeySpec(Base64.getDecoder().decode(privateKeyContent)); return kf.generatePrivate(keySpecPKCS8); } public static String doDecrypt(String encrypted) throws Exception { Cipher cipher = Cipher.getInstance("RSA"); cipher.init(Cipher.DECRYPT_MODE, getRsaPrivateKey()); return new String(cipher.doFinal(Base64.getDecoder().decode(encrypted.getBytes()))); } }