JAVA RSA加密实现

1. 流程概述

在实现JAVA RSA加密的过程中,我们需要进行以下几个步骤:

步骤 操作
1 生成RSA密钥对
2 使用公钥进行加密
3 使用私钥进行解密

下面将逐步介绍每个步骤的具体操作和对应的代码。

2. 生成RSA密钥对

首先,我们需要生成RSA密钥对,其中包括公钥和私钥。公钥用于加密数据,私钥用于解密数据。

下面的代码演示了如何生成RSA密钥对:

import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.NoSuchAlgorithmException;

public class RSAKeyPairGenerator {
    public static void main(String[] args) {
        try {
            // 创建RSA密钥对生成器
            KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA");
            
            // 初始化密钥对生成器,指定密钥长度
            keyPairGenerator.initialize(2048);
            
            // 生成RSA密钥对
            KeyPair keyPair = keyPairGenerator.generateKeyPair();
            
            // 获取公钥和私钥
            PublicKey publicKey = keyPair.getPublic();
            PrivateKey privateKey = keyPair.getPrivate();
            
            System.out.println("公钥:" + publicKey);
            System.out.println("私钥:" + privateKey);
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        }
    }
}

上述代码中,我们使用了KeyPairGenerator类来生成RSA密钥对。在创建密钥对生成器时,我们需要指定加密算法为RSA,并通过initialize方法设置密钥长度。在生成密钥对后,我们可以通过getPublic方法获取公钥,通过getPrivate方法获取私钥。

3. 使用公钥进行加密

生成RSA密钥对后,我们可以使用公钥对数据进行加密。下面的代码演示了如何使用公钥进行加密:

import java.nio.charset.StandardCharsets;
import java.security.KeyFactory;
import java.security.NoSuchAlgorithmException;
import java.security.PublicKey;
import java.security.spec.InvalidKeySpecException;
import java.security.spec.X509EncodedKeySpec;
import javax.crypto.Cipher;
import java.util.Base64;

public class RSAEncryption {
    public static void main(String[] args) {
        try {
            // 原始数据
            String data = "Hello, RSA Encryption!";
            
            // 公钥字符串
            String publicKeyString = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzLZDQYjzpZjyYjGJX2eJ3hFfsQh5HvwcwOcQ+WhQYzW3YE8t6V2FdN7R5VocdZy1Pr9pBq2KfT3uX8gRq7reEBpXMTapcF4QeA0qma6qGBg0+V7vGZ3lM2FoBFPyRjMNCJCb3E7POaQe24vGF2n0RGVLkhWmJf0ya4p2QXGq9o1y//YFH6oQeUJnvOS4eNkttb3H6V8Y5HadrW2O8nU3irLlP7zWd+HXE7bvYm6Yq9LnmowGWznq3ZSTUQ9YrZUZu1ZRMaFmMFFVFYVj+Z1FqNI9Sv2kKfqtjJyfL26kZf+oloSxLbEiQX1a9sQHcTQFc9wYsF3XHOQGfZaVO+Wy5t3ZTYfZVQIDAQAB";
            
            // 将公钥字符串解码为字节数组
            byte[] publicKeyBytes = Base64.getDecoder().decode(publicKeyString);
            
            // 创建X509EncodedKeySpec对象
            X509EncodedKeySpec keySpec = new X509EncodedKeySpec(publicKeyBytes);
            
            // 创建KeyFactory对象,并指定加密算法为RSA
            KeyFactory keyFactory = KeyFactory.getInstance("RSA");
            
            // 生成公钥对象
            PublicKey publicKey = keyFactory.generatePublic(keySpec);
            
            // 创建Cipher对象,指定加密算法为RSA
            Cipher cipher = Cipher.getInstance("RSA");
            
            // 初始化Cipher对象,设置