提供一个安全可靠的非对称加密算法java实现
时间: 2024-05-04 09:17:15 浏览: 16
关于非对称加密算法,常用的有RSA、ECC等算法,这里提供一个基于RSA算法的Java实现:
```java
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.NoSuchAlgorithmException;
import javax.crypto.Cipher;
public class RSAEncryption {
public static String encrypt(String plainText, KeyPair keyPair) throws Exception {
Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
cipher.init(Cipher.ENCRYPT_MODE, keyPair.getPublic());
byte[] encryptedBytes = cipher.doFinal(plainText.getBytes("UTF-8"));
return Base64.getEncoder().encodeToString(encryptedBytes);
}
public static String decrypt(String encryptedText, KeyPair keyPair) throws Exception {
Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
cipher.init(Cipher.DECRYPT_MODE, keyPair.getPrivate());
byte[] encryptedBytes = Base64.getDecoder().decode(encryptedText);
byte[] decryptedBytes = cipher.doFinal(encryptedBytes);
return new String(decryptedBytes, "UTF-8");
}
public static void main(String[] args) throws Exception {
KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("RSA");
keyPairGen.initialize(2048);
KeyPair keyPair = keyPairGen.genKeyPair();
String plainText = "Hello, world!";
String encryptedText = encrypt(plainText, keyPair);
String decryptedText = decrypt(encryptedText, keyPair);
System.out.println("Plain text: " + plainText);
System.out.println("Encrypted text: " + encryptedText);
System.out.println("Decrypted text: " + decryptedText);
}
}
```
以上代码生成一对RSA密钥对,使用公钥加密明文,私钥解密密文。注意在实际应用中,需要将公钥和私钥存储在安全的地方,以保证加解密的安全性。