java 实现用固定公钥进行rsa加密
时间: 2024-03-27 10:40:53 浏览: 51
用java实现RSA加密
使用Java实现RSA加密需要以下步骤:
1. 生成RSA公钥和私钥
```java
KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA");
keyPairGenerator.initialize(2048); // 指定密钥长度
KeyPair keyPair = keyPairGenerator.generateKeyPair();
PublicKey publicKey = keyPair.getPublic();
PrivateKey privateKey = keyPair.getPrivate();
```
2. 使用公钥进行加密
```java
String data = "Hello World!";
byte[] dataBytes = data.getBytes("UTF-8");
Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.ENCRYPT_MODE, publicKey);
byte[] encryptedDataBytes = cipher.doFinal(dataBytes);
```
3. 将加密后的数据转换成Base64字符串
```java
String encryptedData = Base64.getEncoder().encodeToString(encryptedDataBytes);
```
完整的示例代码如下:
```java
import java.security.*;
import javax.crypto.*;
import java.util.*;
import java.util.Base64;
public class RSAEncryption {
public static void main(String[] args) throws Exception {
// 生成RSA公钥和私钥
KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA");
keyPairGenerator.initialize(2048); // 指定密钥长度
KeyPair keyPair = keyPairGenerator.generateKeyPair();
PublicKey publicKey = keyPair.getPublic();
PrivateKey privateKey = keyPair.getPrivate();
// 使用公钥进行加密
String data = "Hello World!";
byte[] dataBytes = data.getBytes("UTF-8");
Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.ENCRYPT_MODE, publicKey);
byte[] encryptedDataBytes = cipher.doFinal(dataBytes);
// 将加密后的数据转换成Base64字符串
String encryptedData = Base64.getEncoder().encodeToString(encryptedDataBytes);
System.out.println("原始数据:" + data);
System.out.println("加密后的数据:" + encryptedData);
}
}
```
注意:在实际应用中,通常不会在每次加密时都生成一对新的公钥和私钥,而是提前生成好一对公钥和私钥,然后使用公钥进行加密,私钥进行解密。因此,如果你有一个固定的公钥,那么在加密时只需要将该公钥传入即可。
阅读全文