java 如何生成rsa OAEPW填充模式得密钥串并进行加密解密
时间: 2023-10-18 11:52:13 浏览: 46
在Java中,可以使用Java Cryptography Architecture(JCA)提供的API来生成RSA密钥对并进行加密解密。下面是使用JCA生成RSA密钥对并进行加密解密的示例代码:
```java
import javax.crypto.Cipher;
import java.security.*;
public class RSAExample {
private static final String ALGORITHM = "RSA";
private static final String TRANSFORMATION = "RSA/ECB/OAEPWithSHA-256AndMGF1Padding";
private static final int KEY_SIZE = 2048;
public static void main(String[] args) throws Exception {
// 生成密钥对
KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance(ALGORITHM);
keyPairGenerator.initialize(KEY_SIZE);
KeyPair keyPair = keyPairGenerator.generateKeyPair();
PublicKey publicKey = keyPair.getPublic();
PrivateKey privateKey = keyPair.getPrivate();
// 明文
String plainText = "Hello, world!";
// 加密
Cipher cipher = Cipher.getInstance(TRANSFORMATION);
cipher.init(Cipher.ENCRYPT_MODE, publicKey);
byte[] cipherText = cipher.doFinal(plainText.getBytes());
// 解密
cipher.init(Cipher.DECRYPT_MODE, privateKey);
byte[] decryptedText = cipher.doFinal(cipherText);
// 输出结果
System.out.println("Plain text: " + plainText);
System.out.println("Cipher text: " + new String(cipherText));
System.out.println("Decrypted text: " + new String(decryptedText));
}
}
```
在上面的示例代码中,使用`KeyPairGenerator`生成RSA密钥对,使用`Cipher`进行加密和解密。其中,`TRANSFORMATION`指定了加密算法和填充模式,`KEY_SIZE`指定了密钥长度。
需要注意的是,加密和解密时需要使用相同的填充模式和密钥对。此外,生成的密钥对需要妥善保管,私钥不应该泄露给他人。