java实现公钥加密私钥解密
时间: 2023-07-29 11:13:27 浏览: 113
在Java中,可以使用Java加密扩展(JCE)库中的RSA算法实现公钥加密私钥解密。下面是一个简单的示例代码:
```java
import java.security.*;
import javax.crypto.*;
import java.util.Base64;
public class RSADemo {
public static void main(String[] args) throws Exception {
String plainText = "Hello, World!";
// 生成RSA密钥对
KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA");
keyPairGenerator.initialize(2048);
KeyPair keyPair = keyPairGenerator.generateKeyPair();
PublicKey publicKey = keyPair.getPublic();
PrivateKey privateKey = keyPair.getPrivate();
// 使用公钥加密数据
Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.ENCRYPT_MODE, publicKey);
byte[] encryptedBytes = cipher.doFinal(plainText.getBytes());
// 输出加密后的数据
System.out.println("Encrypted data: " + Base64.getEncoder().encodeToString(encryptedBytes));
// 使用私钥解密数据
cipher.init(Cipher.DECRYPT_MODE, privateKey);
byte[] decryptedBytes = cipher.doFinal(encryptedBytes);
// 输出解密后的数据
System.out.println("Decrypted data: " + new String(decryptedBytes));
}
}
```
在上面的代码中,首先生成了一个2048位的RSA密钥对,然后使用公钥加密了字符串"Hello, World!",并输出了加密后的数据。接着使用私钥解密了加密后的数据,输出了解密后的数据。注意,在真实的应用中,一般不会直接使用明文字符串作为加密数据,而是先将明文字符串进行哈希处理,然后再加密哈希值。
阅读全文