欢迎访问宙启技术站
智能推送

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.pempublic.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密钥,然后使用公钥加密文件,再使用私钥解密加密文件。