写一个RSA加密的javademo
时间: 2024-10-21 12:07:17 浏览: 17
RSA是一种非对称加密算法,Java中可以使用`java.security`包下的`KeyPairGenerator`, `Cipher`等类来实现。以下是一个简单的RSA加密和解密的Java demo示例:
```java
import java.math.BigInteger;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.PrivateKey;
import java.security.PublicKey;
import javax.crypto.Cipher;
public class RSAExample {
public static void main(String[] args) throws Exception {
// 生成公钥和私钥
KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA");
keyGen.initialize(1024); // 通常选择2048位更安全,这里为了简化演示
KeyPair keyPair = keyGen.generateKeyPair();
// 获取公钥和私钥
PublicKey publicKey = keyPair.getPublic();
PrivateKey privateKey = keyPair.getPrivate();
// 明文
String plaintext = "Hello, RSA!";
// 使用Cipher进行加密
Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.ENCRYPT_MODE, publicKey);
byte[] encryptedBytes = cipher.doFinal(plaintext.getBytes());
// 使用私钥解密
cipher.init(Cipher.DECRYPT_MODE, privateKey);
String decryptedText = new String(cipher.doFinal(encryptedBytes));
System.out.println("Original Text: " + plaintext);
System.out.println("Encrypted Text: " + bytesToHex(encryptedBytes));
System.out.println("Decrypted Text: " + decryptedText);
// 辅助函数将字节数组转换为十六进制字符串
private static String bytesToHex(byte[] bytes) {
StringBuilder result = new StringBuilder();
for (byte b : bytes) {
result.append(String.format("%02x", b));
}
return result.toString();
}
}
}
```
注意:这个例子仅用于教学目的,实际应用中你需要处理异常、保存和加载密钥等问题,并确保正确地管理密钥的安全。
阅读全文