Java实现rsa加解密
时间: 2023-08-01 08:14:37 浏览: 134
RSA是一种非对称加密算法,用于加密和解密数据。下面是使用Java实现RSA加解密的示例代码:
```java
import java.security.Key;
import java.security.KeyFactory;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.security.spec.PKCS8EncodedKeySpec;
import java.security.spec.X509EncodedKeySpec;
import javax.crypto.Cipher;
public class RSAExample {
public static void main(String[] args) throws Exception {
// 生成RSA密钥对
KeyPair keyPair = generateKeyPair();
// 获取公钥和私钥
PublicKey publicKey = keyPair.getPublic();
PrivateKey privateKey = keyPair.getPrivate();
// 待加密的数据
String plainText = "Hello, RSA!";
// 使用公钥加密数据
byte[] encryptedData = encrypt(plainText, publicKey);
// 使用私钥解密数据
String decryptedText = decrypt(encryptedData, privateKey);
System.out.println("原始数据:" + plainText);
System.out.println("加密后的数据:" + new String(encryptedData));
System.out.println("解密后的数据:" + decryptedText);
}
// 生成RSA密钥对
public static KeyPair generateKeyPair() throws Exception {
KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA");
keyPairGenerator.initialize(2048);
return keyPairGenerator.generateKeyPair();
}
// 使用公钥加密数据
public static byte[] encrypt(String plainText, PublicKey publicKey) throws Exception {
Cipher cipher = Cipher.getInstance("RSA");
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");
cipher.init(Cipher.DECRYPT_MODE, privateKey);
byte[] decryptedData = cipher.doFinal(encryptedData);
return new String(decryptedData);
}
}
```
上述代码中,首先通过`generateKeyPair()`方法生成RSA密钥对,然后使用公钥加密数据,私钥解密数据。示例中使用的是2048位的RSA密钥对,你可以根据需要调整密钥长度。
阅读全文