RSA(Rivest-Shamir-Adleman)是一种非对称加密算法,它使用公钥和私钥进行加密和解密操作。在RSA加密中,公钥用于加密数据,私钥用于解密数据。在Java中,我们可以使用Java标准库中的java.security包来实现RSA加密。

RSA 公钥加密 Java

RSA 加密原理

RSA加密算法基于两个大素数的乘积难以分解的数学难题,实现了一种高度安全的加密算法。RSA加密过程中,首先生成一对公钥和私钥,公钥用于加密数据,私钥用于解密数据。公钥可以发布给任何人,而私钥则保密。

示例代码

下面是一个简单的Java程序,演示了如何使用RSA公钥加密数据:

import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.security.SecureRandom;
import java.security.KeyFactory;
import java.security.spec.PKCS8EncodedKeySpec;
import java.security.spec.X509EncodedKeySpec;
import javax.crypto.Cipher;

public class RSAEncryptionExample {

    public static void main(String[] args) throws Exception {
        String data = "Hello, World!";
        
        // Generate key pair
        KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA");
        keyPairGenerator.initialize(2048, new SecureRandom());
        KeyPair keyPair = keyPairGenerator.generateKeyPair();
        PublicKey publicKey = keyPair.getPublic();
        PrivateKey privateKey = keyPair.getPrivate();
        
        // Encrypt data using public key
        Cipher cipher = Cipher.getInstance("RSA");
        cipher.init(Cipher.ENCRYPT_MODE, publicKey);
        byte[] encryptedData = cipher.doFinal(data.getBytes());
        
        // Decrypt data using private key
        cipher.init(Cipher.DECRYPT_MODE, privateKey);
        byte[] decryptedData = cipher.doFinal(encryptedData);
        
        System.out.println("Original data: " + data);
        System.out.println("Encrypted data: " + new String(encryptedData));
        System.out.println("Decrypted data: " + new String(decryptedData));
    }
}

状态图

stateDiagram
    [*] --> Generated
    Generated --> Encrypting
    Encrypting --> Decrypting
    Decrypting --> [*]

类图

classDiagram
    class RSAEncryptionExample {
        +main(String[])
    }

在上面的示例代码中,我们首先生成了一对公钥和私钥,然后使用公钥对数据进行加密,再使用私钥对加密后的数据进行解密,最终得到原始数据。通过这种方式,我们可以实现安全的数据传输和存储。

总之,RSA公钥加密是一种非常安全且常用的加密算法,在Java中也非常容易实现。希望本文能帮助你了解如何在Java中使用RSA公钥加密数据。如果你想进一步学习RSA加密算法,可以查阅更多资料或参考Java标准库的文档。祝你学习进步!