python rsa 公私钥 加解密 文件
时间: 2023-08-31 10:26:18 浏览: 189
C# RSA 公钥加密,私钥解密(.net core) 源码 CCCRSAGYJMSYJMNETCORE.rar
### 回答1:
Python RSA 加密和解密文件的基本流程如下:
1. 使用 RSA 库生成公钥和私钥。
2. 使用公钥对文件进行加密。
3. 使用私钥对加密后的文件进行解密。
示例代码:
```
from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_OAEP
# 生成公钥和私钥
key = RSA.generate(2048)
private_key = key.export_key()
public_key = key.publickey().export_key()
# 使用公钥加密文件
with open("original_file.txt", "rb") as f:
original_data = f.read()
cipher = PKCS1_OAEP.new(RSA.import_key(public_key))
encrypted_data = cipher.encrypt(original_data)
with open("encrypted_file.bin", "wb") as f:
f.write(encrypted_data)
# 使用私钥解密文件
with open("encrypted_file.bin", "rb") as f:
encrypted_data = f.read()
cipher = PKCS1_OAEP.new(RSA.import_key(private_key))
decrypted_data = cipher.decrypt(encrypted_data)
with open("decrypted_file.txt", "wb") as f:
f.write(decrypted_data)
```
请注意,上面的代码仅用于示例目的,实际应用中需要注意密钥的安全存储。
### 回答2:
RSA加密算法是一种非对称加密算法,它使用一对相互关联的公钥和私钥进行加解密。公钥用于加密数据,而私钥用于解密数据。
在使用Python进行RSA加解密文件时,我们首先需要生成一对公私钥。可以使用`rsa`库中的`newkeys()`函数来生成密钥对。例如,以下代码将生成一对2048位的公私钥:
```
from rsa import newkeys
# 生成一对公私钥
(pub_key, priv_key) = newkeys(2048)
```
接下来,我们可以使用公私钥进行文件的加解密操作。以下是一个使用RSA加解密文件的示例代码:
```
from rsa import encrypt, decrypt
# 加密文件
def encrypt_file(file_path, output_path, pub_key):
with open(file_path, 'rb') as file:
data = file.read()
enc_data = encrypt(data, pub_key)
with open(output_path, 'wb') as output_file:
output_file.write(enc_data)
# 解密文件
def decrypt_file(file_path, output_path, priv_key):
with open(file_path, 'rb') as file:
enc_data = file.read()
dec_data = decrypt(enc_data, priv_key)
with open(output_path, 'wb') as output_file:
output_file.write(dec_data)
```
在使用以上代码时,需要指定待加密的文件路径、加密后的文件输出路径以及公私钥。可以通过`pub_key.save_pkcs1()`和`priv_key.save_pkcs1()`方法将密钥保存到文件以便后续使用。
需要注意的是,RSA加密算法会对数据进行分块加解密,因此对于较大的文件,可能需要分块加密再拼接。另外,RSA加密算法的运算耗时较长,因此在实际使用中可能需要将其用在对安全性要求较高的场景。
阅读全文