Laravel  
laravel
文档
数据库
架构
入门
php技术
    
Laravelphp
laravel / php / java / vue / mysql / linux / python / javascript / html / css / c++ / c#

java rsa解密

作者:任光阴风干ゝ影象   发布日期:2025-03-19   浏览:188

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

解释说明:

  1. Base64解码:私钥和加密文本都是以Base64编码的形式提供的,因此需要先进行解码。
  2. PrivateKey生成:通过PKCS8EncodedKeySpecKeyFactory将解码后的私钥字节数组转换为PrivateKey对象。
  3. Cipher初始化:使用Cipher类进行解密操作,设置为解密模式,并传入私钥。
  4. 解密过程:将Base64解码后的加密文本传递给Cipher对象进行解密,最终得到原始的明文。

请注意,示例中的私钥和加密文本仅为示意,实际应用中应确保私钥的安全性和加密文本的有效性。

上一篇:java prometheus

下一篇:java 获取请求方ip

大家都在看

java连接数据库的代码

ubuntu 卸载java

java sort用法

java collections.sort

java file类的方法

java 判断

java时间数据类型

java 时间加一天

java demo

java 截取

Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3

Laravel 中文站