You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
46 lines
2.7 KiB
46 lines
2.7 KiB
3 years ago
|
package com.fr.plugin.rcsso.utils;
|
||
|
|
||
|
import org.apache.commons.codec.binary.Base64;
|
||
|
|
||
|
import javax.crypto.Cipher;
|
||
|
import java.net.URLDecoder;
|
||
|
import java.net.URLEncoder;
|
||
|
import java.security.KeyFactory;
|
||
|
import java.security.interfaces.RSAPrivateKey;
|
||
|
import java.security.spec.PKCS8EncodedKeySpec;
|
||
|
|
||
|
public class RSAUtil {
|
||
|
public static void main(String[] args) throws Exception {
|
||
|
// 密文
|
||
|
// String message = "aFnvaH3EvOQYX/1zRMwueZvaEG/Oghm4aJ25HtEhYIEQAuLUMRpN9rAfL8a6DWoQ93Cm6bBlfNIRQE0HvDnb897ClmL9tXC3 rGjO8P5RXAuCTywpLHJI/774 z1iXsIi 50YoTDCyt1oKm1z2vc5QBr8EV8ivNk56mFC/s7LqY=";
|
||
|
String message = URLDecoder.decode("G2xTxbkrjzgEA4YOryTOUYksyJX0uHnvrutmFgnZEtD291kuSI%2Bq5oEaetqBz%2BVBh3D4Pz9t2iFfyIgLP7NEs%2BoD10i2eh%2FFWKwPEucJ3Ls9XV2fqfkFwsiA6%2FHQZvdzLs5MnbFjZ2c4uk2atSkUUnRGZ8xk5T39h6D52Ep26zw%3D");
|
||
|
System.out.println(URLEncoder.encode(message));
|
||
|
// 私钥:请保存好
|
||
|
String privateKey = "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAKKhGMjcjNkjxu0tTPUc2euB1ckVDIKbEftzLPL4qkg+WuD7sElQO2MeHdwkkYZ4zruuhpwyjIuaKkzwx5Zea1X2ufwMTT6ehArhTNuacB1zVSb4/n5p0ICAnrTjTy5CktdPCT2iMgr83AOQVBOigF8BNULf1tM2a/NG+LKJlbAnAgMBAAECgYEAlNWuYxVFaewOQD23MpQG9DvMtcynuFfG60MLHgppfNhkP4bYXSAqWZnUZgapkFG7kZQ16XlxmsmqcOPjJUCgJX85wjr3dUJ1P7hIVeV0eEFOM8EIRiznKL+ihtiQqhd3aHXIlx2S70RJFugt8tkB6kF+mpprSauLImLnD8imE4ECQQDySc+5Njsz+qC8z5/okPJlP5qVM19sqZ2PH+d8Lk/RuBp6N+8WGnVUhCC40pLtFiZTndGAUkV76+dH8uscb8xHAkEAq9U2iiSTqmm3zP1+Ju5DCx681mdklxWRR7d5UGOsJue6/asrrNIaTOy/lt9mRGOOvJhSWxRMexRRJmDGV+1NIQJATxbbENlsD/ajG58m0tLl3Tka69M+NglUHlFKzhWMBqhzNCwoBm4SmMkcqVhLj8roLelZZur0NZR3Bdx89OZlpwJAf6Pv0Yn+DrZdC+65SN3v+1Cn4XQIKpqgwm8ttGN1u6ijJE+EL+oaE05BuybTZrW1j65ubq2TalHbPfDhJOtnQQJANAEPhhCsQdAiJfMUn+Xx2CEifjOpjN4ZJNdqHEkyf42SnVJiwAhTWrhV0dhzytZXdJt6gN0X8P/ycrPbJGh6Rw==";
|
||
|
String messageDes = decrypt(message, privateKey);
|
||
|
System.out.println("还原后的明文为:" + messageDes);
|
||
|
|
||
|
//tokenid
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* 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("UTF-8"));
|
||
|
//base64编码的私钥
|
||
|
byte[] decoded = Base64.decodeBase64(privateKey);
|
||
|
RSAPrivateKey priKey = (RSAPrivateKey) KeyFactory.getInstance("RSA").generatePrivate(new PKCS8EncodedKeySpec(decoded));
|
||
|
//RSA解密
|
||
|
Cipher cipher = Cipher.getInstance("RSA");
|
||
|
cipher.init(Cipher.DECRYPT_MODE, priKey);
|
||
|
return new String(cipher.doFinal(inputByte));
|
||
|
}
|
||
|
}
|