Java中的rsa加密
时间: 2023-09-03 12:13:15 浏览: 77
在Java中,可以使用`java.security`包中的`KeyPairGenerator`、`Cipher`、`KeyFactory`等类来实现RSA加密。
下面是一个简单的示例:
```java
import java.security.*;
import javax.crypto.*;
import java.util.Base64;
public class RSAEncryptionExample {
public static void main(String[] args) throws Exception {
// 生成RSA密钥对
KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA");
kpg.initialize(2048); // 设置密钥长度为2048位
KeyPair keyPair = kpg.generateKeyPair();
PublicKey publicKey = keyPair.getPublic();
PrivateKey privateKey = keyPair.getPrivate();
// 获取Cipher实例
Cipher cipher = Cipher.getInstance("RSA");
// 使用公钥加密数据
String plainText = "Hello, RSA!";
cipher.init(Cipher.ENCRYPT_MODE, publicKey);
byte[] encryptedBytes = cipher.doFinal(plainText.getBytes("UTF-8"));
String encryptedText = Base64.getEncoder().encodeToString(encryptedBytes);
System.out.println("Encrypted text: " + encryptedText);
// 使用私钥解密数据
cipher.init(Cipher.DECRYPT_MODE, privateKey);
byte[] decryptedBytes = cipher.doFinal(Base64.getDecoder().decode(encryptedText));
String decryptedText = new String(decryptedBytes, "UTF-8");
System.out.println("Decrypted text: " + decryptedText);
}
}
```
在这个示例中,我们首先使用`KeyPairGenerator`类生成了一对RSA密钥对,然后使用公钥加密了一个字符串,最后使用私钥解密了密文并还原成原文。需要注意的是,在加密和解密时,需要指定合适的工作模式和填充方式,这里我们使用默认的PKCS#1填充方式。
阅读全文