import java.security.KeyFactory;
import java.security.PrivateKey;
import java.security.spec.PKCS8EncodedKeySpec;
import javax.crypto.Cipher;
import java.util.Base64;
public class RSADecryptExample {
// RSA解密方法
public static String decrypt(String encryptedText, String privateKeyString) throws Exception {
// 将Base64编码的私钥字符串转换为字节数组
byte[] decodedPrivateKey = Base64.getDecoder().decode(privateKeyString);
// 创建PKCS8EncodedKeySpec对象
PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(decodedPrivateKey);
// 使用KeyFactory生成PrivateKey对象
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
PrivateKey privateKey = keyFactory.generatePrivate(keySpec);
// 初始化Cipher对象,设置为解密模式
Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.DUCRYPT_MODE, privateKey);
// 将Base64编码的加密文本转换为字节数组并解密
byte[] encryptedBytes = Base64.getDecoder().decode(encryptedText);
byte[] decryptedBytes = cipher.doFinal(encryptedBytes);
// 将解密后的字节数组转换为字符串并返回
return new String(decryptedBytes);
}
public static void main(String[] args) {
try {
// 示例私钥(实际使用时应从安全存储中读取)
String privateKey = "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCAmMwggJfAgEAAoGBALFtX...";
// 示例加密文本(实际使用时应为真实的加密数据)
String encryptedText = "Rn1pZTlPcVUySmxqS2Y3b05iQWdubUVsYkhzZjJ2eHh3a2NvbFZ...";
// 调用解密方法并输出结果
String decryptedText = decrypt(encryptedText, privateKey);
System.out.println("Decrypted Text: " + decryptedText);
} catch (Exception e) {
e.printStackTrace();
}
}
}
PKCS8EncodedKeySpec
和KeyFactory
将解码后的私钥字节数组转换为PrivateKey
对象。Cipher
类进行解密操作,设置为解密模式,并传入私钥。Cipher
对象进行解密,最终得到原始的明文。请注意,示例中的私钥和加密文本仅为示意,实际应用中应确保私钥的安全性和加密文本的有效性。
上一篇:java prometheus
下一篇:java 获取请求方ip
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站