如何使用Python加密文件
要使用Python加密文件,可以使用加密算法和密钥对文件进行加密。常见的加密算法有AES、DES、RSA等。下面是使用AES算法和密钥对文件进行加密的示例:
import os from Crypto.Cipher import AES # 定义加密函数 def encrypt_file(key, filename): # 加密文件的块大小 chunksize = 64*1024 # 生成随机的IV向量 iv = os.urandom(16) # 创建AES加密器 encryptor = AES.new(key, AES.MODE_CBC, iv) # 获取文件大小 filesize = os.path.getsize(filename) # 输出加密文件名和加密前文件大小 encrypted_filename = filename + '.enc' print(f'Encrypting {filename} ({filesize} bytes) to {encrypted_filename}...') # 打开加密后文件并写入IV向量 with open(encrypted_filename, 'wb') as outfile: outfile.write(iv) # 加密文件内容 with open(filename, 'rb') as infile: while True: chunk = infile.read(chunksize) if len(chunk) == 0: break elif len(chunk) % 16 != 0: # 填充数据 chunk += b' ' * (16 - len(chunk) % 16) outfile.write(encryptor.encrypt(chunk)) # 密钥,必须为16、24、32字节长 key = b'mysecretpassword12' # 要加密的文件 filename = 'pidancode.com' # 加密文件 encrypt_file(key, filename)
这段代码会生成一个新的加密文件pidancode.com.enc,并将加密后的数据写入其中。解密时需要使用相同的密钥和IV向量。
# 定义解密函数 def decrypt_file(key, filename): # 加密文件的块大小 chunksize = 64*1024 # 打开加密文件并读取IV向量 with open(filename, 'rb') as infile: iv = infile.read(16) # 创建AES解密器 decryptor = AES.new(key, AES.MODE_CBC, iv) # 输出解密文件名 decrypted_filename = os.path.splitext(filename)[0] print(f'Decrypting {filename} to {decrypted_filename}...') # 解密文件内容 with open(decrypted_filename, 'wb') as outfile: while True: chunk = infile.read(chunksize) if len(chunk) == 0: break outfile.write(decryptor.decrypt(chunk)) # 去掉填充数据 outfile.truncate() # 解密文件 decrypt_file(key, 'pidancode.com.enc')
这段代码会生成一个新的解密文件pidancode.com,并将解密后的数据写入其中。解密前需要先将加密文件和密钥放在同一目录下。
需要注意的是,这段代码中使用的密钥为明文,实际使用时应该使用安全的方式保存密钥,例如使用密钥管理系统或硬件安全模块。
相关文章