Java实现RSA加密解密
时间: 2023-11-13 22:52:24 浏览: 176
Java中可以通过使用Java Cryptography Architecture(JCA)提供的RSA类来实现RSA加密解密。首先,您需要生成一对RSA密钥,其中一个是公钥,另一个是私钥。然后,您可以使用公钥对数据进行加密,使用私钥对加密后的数据进行解密。
下面是一个简单的示例代码,展示了如何使用Java实现RSA加密解密:
```java
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.security.Security;
import javax.crypto.Cipher;
public class RSAExample {
public static void main(String[] args) throws Exception {
// 生成RSA密钥对
KeyPair keyPair = generateKeyPair();
// 待加密的明文
String plaintext = "Hello, RSA!";
// 使用公钥加密明文
byte[] encryptedData = encrypt(plaintext, keyPair.getPublic());
// 使用私钥解密密文
String decryptedText = decrypt(encryptedData, keyPair.getPrivate());
System.out.println("明文: " + plaintext);
System.out.println("加密后的密文: " + new String(encryptedData));
System.out.println("解密后的明文: " + decryptedText);
}
// 生成RSA密钥对
public static KeyPair generateKeyPair() throws Exception {
Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());
KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA", "BC");
keyPairGenerator.initialize(2048);
return keyPairGenerator.generateKeyPair();
}
// 使用公钥加密
public static byte[] encrypt(String plaintext, PublicKey publicKey) throws Exception {
Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding", "BC");
cipher.init(Cipher.ENCRYPT_MODE, publicKey);
return cipher.doFinal(plaintext.getBytes());
}
// 使用私钥解密
public static String decrypt(byte[] encryptedData, PrivateKey privateKey) throws Exception {
Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding", "BC");
cipher.init(Cipher.DECRYPT_MODE, privateKey);
byte[] decryptedData = cipher.doFinal(encryptedData);
return new String(decryptedData); }
}
```
请注意,上述示例使用了Bouncy Castle加密库,您需要在项目中添加Bouncy Castle的相关依赖。
阅读全文