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));
    }
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
状态图
Generated Encrypting Decrypting
类图
RSAEncryptionExample +main(String[])

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

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