Java 实现RSA加密
时间: 2023-10-13 16:04:31 浏览: 106
RSA加密是一种非对称加密算法,它需要使用公钥进行加密,私钥进行解密。Java中实现RSA加密可以使用Java自带的加密库javax.crypto。
以下是一个简单的RSA加密示例:
```java
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.NoSuchAlgorithmException;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.security.SecureRandom;
import javax.crypto.Cipher;
public class RSAEncryption {
public static void main(String[] args) throws Exception {
// 生成密钥对
KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA");
keyPairGenerator.initialize(2048, new SecureRandom());
KeyPair keyPair = keyPairGenerator.generateKeyPair();
PublicKey publicKey = keyPair.getPublic();
PrivateKey privateKey = keyPair.getPrivate();
// 加密字符串
String message = "Hello, World!";
byte[] encryptedMessage = encrypt(message, publicKey);
System.out.println("Encrypted message: " + new String(encryptedMessage));
// 解密字符串
String decryptedMessage = decrypt(encryptedMessage, privateKey);
System.out.println("Decrypted message: " + decryptedMessage);
}
public static byte[] encrypt(String message, PublicKey publicKey) throws Exception {
Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.ENCRYPT_MODE, publicKey);
return cipher.doFinal(message.getBytes());
}
public static String decrypt(byte[] encryptedMessage, PrivateKey privateKey) throws Exception {
Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.DECRYPT_MODE, privateKey);
byte[] decryptedMessage = cipher.doFinal(encryptedMessage);
return new String(decryptedMessage);
}
}
```
在上面的示例中,我们使用KeyPairGenerator类生成2048位的RSA密钥对,然后使用公钥加密一个字符串,再使用私钥解密该字符串。在加密和解密过程中,我们使用了Cipher类来进行加密和解密操作。在初始化Cipher实例时,我们需要指定加密/解密模式和密钥。
阅读全文