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.
45 lines
2.7 KiB
45 lines
2.7 KiB
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)); |
|
} |
|
}
|
|
|