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())));
|
}
|
|
}
|