使用RSA公钥加密数据
在Java中,RSA(Rivest-Shamir-Adleman)是一种非对称加密算法,它可以用于加密和解密数据。在RSA加密中,公钥用于加密数据,私钥用于解密数据。本文将介绍如何使用已知的RSA公钥来加密数据。
RSA公钥加密原理
RSA公钥加密的原理很简单:首先生成一对公私钥,将公钥分发给需要加密数据的用户,用户使用公钥加密数据,只有持有私钥的用户才能解密数据。
代码示例
下面是一个简单的Java示例代码,演示如何使用已知的RSA公钥来加密数据:
import javax.crypto.Cipher;
import java.security.KeyFactory;
import java.security.PublicKey;
import java.security.spec.X509EncodedKeySpec;
import java.util.Base64;
public class RSAEncryption {
public static String encrypt(String publicKeyString, String data) throws Exception {
byte[] publicKeyBytes = Base64.getDecoder().decode(publicKeyString);
X509EncodedKeySpec keySpec = new X509EncodedKeySpec(publicKeyBytes);
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
PublicKey publicKey = keyFactory.generatePublic(keySpec);
Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.ENCRYPT_MODE, publicKey);
byte[] encryptedBytes = cipher.doFinal(data.getBytes());
return Base64.getEncoder().encodeToString(encryptedBytes);
}
public static void main(String[] args) throws Exception {
String publicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqvJvYTiT..."; // 替换为实际的公钥
String data = "Hello, RSA!";
String encryptedData = encrypt(publicKey, data);
System.out.println("Encrypted data: " + encryptedData);
}
}
甘特图
gantt
title RSA公钥加密流程
section 生成密钥对
生成密钥对 :done, 2022-01-01, 1d
section 加密数据
获取公钥 :done, after 1d, 1d
加密数据 :active, after 1d, 1d
section 解密数据
获取私钥 :done, after 2d, 1d
解密数据 :after 1d , 1d
饼状图
pie
title RSA公钥加密数据分布
"已加密数据" : 70
"未加密数据" : 30
通过以上代码示例和图表,我们可以清楚地了解如何使用已知的RSA公钥加密数据。希朇本文能对您有所帮助。