调用python或Java自带的大数库,实现RSA对中英文字符串的加密和解密过程; 运行结果:
时间: 2024-10-21 08:07:10 浏览: 18
Java对字符串进行加密解密
在Python中,你可以使用内置的`cryptography`库来处理RSA加密和解密。首先,需要安装这个库(如果尚未安装):
```bash
pip install cryptography
```
对于Java,可以使用`java.security`包提供的类,如`KeyPairGenerator`, `Cipher`等,配合`javax.crypto`包来操作RSA。
以下是一个简单的例子,展示如何使用Python的`cryptography`库进行RSA加密和解密:
```python
from cryptography.hazmat.primitives import serialization, hashes
from cryptography.hazmat.primitives.asymmetric import rsa, padding
from cryptography.hazmat.backends import default_backend
# 生成RSA密钥对
private_key = rsa.generate_private_key(
public_exponent=65537,
key_size=2048,
backend=default_backend()
)
public_key = private_key.public_key()
# 加密(示例用英文字符串)
plaintext = "Hello, world!"
cipher_text = private_key.encrypt(plaintext.encode(), padding.OAEP(mgf=padding.MGF1(algorithm=hashes.SHA256()), algorithm=hashes.SHA256(), label=None))
# 解密
decrypted_text = public_key.decrypt(cipher_text, padding.OAEP(mgf=padding.MGF1(algorithm=hashes.SHA256()), algorithm=hashes.SHA256(), label=None)).decode()
print(f"原文: {plaintext}")
print(f"加密后的文本: {cipher_text.hex()}")
print(f"解密后的原文: {decrypted_text}")
# 对中文字符串同样可以处理,只需保证编码一致即可
chinese_plaintext = "你好,世界!"
chinese_cipher_text = private_key.encrypt(chinese_plaintext.encode('utf-8'), padding.OAEP(...))
```
对于Java,你需要创建类似的过程,这里提供一个基本框架:
```java
import java.security.*;
import javax.crypto.Cipher;
import java.util.Base64;
// 生成RSA密钥对
KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA");
keyGen.initialize(2048);
KeyPair keyPair = keyGen.generateKeyPair();
PrivateKey privateKey = keyPair.getPrivate();
PublicKey publicKey = keyPair.getPublic();
// 加密(示例用英文字符串)
String plaintext = "Hello, world!";
byte[] cipherBytes = Cipher.doFinal(plaintext.getBytes(), publicKey, Cipher.ENCRYPT_MODE);
// 解密
String decryptedText = new String(Cipher.doFinal(cipherBytes, privateKey, Cipher.DECRYPT_MODE));
System.out.println("原文: " + plaintext);
System.out.println("加密后的文本: " + Base64.getEncoder().encodeToString(cipherBytes));
System.out.println("解密后的原文: " + decryptedText);
// 对中文字符串处理类似,注意编码转换
String chinesePlaintext = "你好,世界!";
byte[] chineseCipherBytes = Cipher.doFinal(chinesePlaintext.getBytes("UTF-8"), publicKey, Cipher.ENCRYPT_MODE);
```
运行上述代码后,你会看到加密和解密的结果。记得在实际应用中,你需要妥善保存并管理私钥的安全性。
阅读全文