java rsa加密算法
时间: 2023-07-09 14:17:36 浏览: 127
RSA加密算法是一种非对称加密算法,它需要一对密钥来完成加密和解密的过程。其中,公钥可以公开,任何人都可以使用它来加密数据,但只有私钥持有者才能使用私钥来解密数据。
以下是Java实现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.Signature;
public class RSAEncryptionExample {
public static void main(String[] args) throws Exception {
// 生成RSA密钥对
KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA");
keyPairGenerator.initialize(1024);
KeyPair keyPair = keyPairGenerator.genKeyPair();
PublicKey publicKey = keyPair.getPublic();
PrivateKey privateKey = keyPair.getPrivate();
// 待加密的数据
String data = "Hello, world!";
// 使用公钥加密数据
byte[] encryptedData = encrypt(data.getBytes(), publicKey);
// 使用私钥解密数据
byte[] decryptedData = decrypt(encryptedData, privateKey);
// 输出解密后的数据
System.out.println(new String(decryptedData));
}
// 使用公钥加密数据
public static byte[] encrypt(byte[] data, PublicKey publicKey) throws Exception {
Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.ENCRYPT_MODE, publicKey);
return cipher.doFinal(data);
}
// 使用私钥解密数据
public static byte[] decrypt(byte[] data, PrivateKey privateKey) throws Exception {
Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.DECRYPT_MODE, privateKey);
return cipher.doFinal(data);
}
}
```
在上面的示例代码中,我们首先生成了一对RSA密钥对,然后使用公钥加密了一段数据,并使用私钥解密了加密后的数据。注意,在实际使用中,我们需要将公钥发送给需要加密数据的人,而私钥需要妥善保管,不要泄露给任何人。
阅读全文