Python中使用RSA算法进行文件加密和解密的实现方法
发布时间:2023-12-24 10:02:11
RSA算法是一种非对称加密算法,常用于数据的加密和解密。在Python中,我们可以使用pycryptodome库来实现RSA算法的加密和解密。
首先,我们需要生成一对RSA密钥,包括公钥和私钥。可以使用RSA.generate()函数来生成RSA密钥对,例如:
from Crypto.PublicKey import RSA
# 生成2048位的RSA密钥对
key = RSA.generate(2048)
# 保存私钥到文件
private_key = key.export_key()
with open('private.pem', 'wb') as f:
f.write(private_key)
# 保存公钥到文件
public_key = key.publickey().export_key()
with open('public.pem', 'wb') as f:
f.write(public_key)
上述代码中,生成了一个2048位的RSA密钥对,并分别保存了私钥和公钥到文件private.pem和public.pem中。
接下来,我们可以使用生成的公钥来加密文件。可以使用RSA.import_key()函数导入公钥,然后使用RSA.encrypt()函数进行加密。例如,我们将一个文件加密并保存到另一个文件中:
from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_OAEP
# 导入公钥
with open('public.pem', 'rb') as f:
key = RSA.import_key(f.read())
# 创建RSA加密器
cipher = PKCS1_OAEP.new(key)
# 加密文件
with open('input.txt', 'rb') as f:
data = f.read()
encrypted_data = cipher.encrypt(data)
# 保存加密后的文件
with open('encrypted_data.bin', 'wb') as f:
f.write(encrypted_data)
上述代码中,我们首先导入公钥,然后创建一个RSA加密器,使用该加密器来对文件进行加密,并将加密后的数据保存到encrypted_data.bin文件中。
最后,我们可以使用私钥来解密已加密的文件。可以使用RSA.import_key()函数导入私钥,然后使用RSA.decrypt()函数进行解密。例如,我们将一个加密的文件解密并保存到另一个文件中:
from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_OAEP
# 导入私钥
with open('private.pem', 'rb') as f:
key = RSA.import_key(f.read())
# 创建RSA加密器
cipher = PKCS1_OAEP.new(key)
# 解密文件
with open('encrypted_data.bin', 'rb') as f:
encrypted_data = f.read()
data = cipher.decrypt(encrypted_data)
# 保存解密后的文件
with open('decrypted_data.txt', 'wb') as f:
f.write(data)
上述代码中,我们首先导入私钥,然后创建一个RSA加密器,使用该加密器来对加密文件进行解密,并将解密后的数据保存到decrypted_data.txt文件中。
综上所述,我们可以使用pycryptodome库来实现RSA算法的文件加密和解密。首先生成一对RSA密钥,然后使用公钥加密文件,再使用私钥解密加密文件。
