RSA/ECB/OAEPWITHSHA-256ANDMGF1PADDING java 2048 加密解密
时间: 2023-09-07 18:15:05 浏览: 227
RSA+ECB+OAEPWithSHA-256AndMGF1Padding
这是一个常见的RSA加密算法的实现。RSA是一种非对称加密算法,它使用公钥加密、私钥解密或者私钥加密、公钥解密来实现数据的保护。在这个算法中,ECB是块加密模式,OAEP是填充方式,SHA-256是散列算法。MGF1是一种掩码生成功能,用于保护数据的完整性。
在Java中,我们可以使用JCE(Java Cryptography Extension)提供的RSA API来实现RSA加密解密。实现步骤大体如下:
1. 生成RSA密钥对:使用KeyPairGenerator,设置密钥长度和随机数生成器等参数,生成公钥和私钥。
2. 加密:使用Cipher,设置加密模式和填充方式,使用公钥对数据进行加密。
3. 解密:使用Cipher,设置解密模式和填充方式,使用私钥对加密数据进行解密。
下面是Java代码示例:
```java
import java.security.*;
import javax.crypto.*;
import javax.crypto.spec.*;
import java.util.*;
import java.io.*;
public class RSAExample {
public static void main(String[] args) {
try {
// 生成RSA密钥对
KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA");
keyGen.initialize(2048, new SecureRandom());
KeyPair keyPair = keyGen.generateKeyPair();
PublicKey publicKey = keyPair.getPublic();
PrivateKey privateKey = keyPair.getPrivate();
// 加密
Cipher cipher = Cipher.getInstance("RSA/ECB/OAEPWITHSHA-256ANDMGF1PADDING");
cipher.init(Cipher.ENCRYPT_MODE, publicKey);
byte[] plaintText = "This is a test message".getBytes("UTF-8");
byte[] cipherText = cipher.doFinal(plaintText);
// 解密
cipher.init(Cipher.DECRYPT_MODE, privateKey);
byte[] decryptedText = cipher.doFinal(cipherText);
// 输出结果
System.out.println("Original plain text: " + new String(plaintText));
System.out.println("Encrypted cipher text: " + new String(cipherText));
System.out.println("Decrypted plain text: " + new String(decryptedText));
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
```
阅读全文