python文件加密与解密的方法是什么

   2025-02-15 8070
核心提示:Python文件加密与解密的方法可以使用以下几种方式:对称加密:使用相同的密钥进行加密和解密。常见的对称加密算法有AES、DES等。

Python文件加密与解密的方法可以使用以下几种方式:

对称加密:使用相同的密钥进行加密和解密。常见的对称加密算法有AES、DES等。可以使用cryptography库来实现对称加密,具体方法如下:
from cryptography.fernet import Fernet# 生成密钥key = Fernet.generate_key()# 创建加密器cipher = Fernet(key)# 加密文件with open('plain.txt', 'rb') as file:    plaintext = file.read()encrypted_text = cipher.encrypt(plaintext)# 将加密文件写入新文件with open('encrypted.txt', 'wb') as file:    file.write(encrypted_text)# 解密文件with open('encrypted.txt', 'rb') as file:    encrypted_text = file.read()decrypted_text = cipher.decrypt(encrypted_text)# 将解密文件写入新文件with open('decrypted.txt', 'wb') as file:    file.write(decrypted_text)
非对称加密:使用公钥进行加密,私钥进行解密。常见的非对称加密算法有RSA等。可以使用cryptography库来实现非对称加密,具体方法如下:
from cryptography.hazmat.primitives import serializationfrom cryptography.hazmat.primitives.asymmetric import rsa, paddingfrom 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()# 保存私钥到文件with open('private_key.pem', 'wb') as file:    file.write(        private_key.private_bytes(            encoding=serialization.Encoding.PEM,            format=serialization.PrivateFormat.PKCS8,            encryption_algorithm=serialization.NoEncryption()        )    )# 保存公钥到文件with open('public_key.pem', 'wb') as file:    file.write(        public_key.public_bytes(            encoding=serialization.Encoding.PEM,            format=serialization.PublicFormat.SubjectPublicKeyInfo        )    )# 加密文件with open('plain.txt', 'rb') as file:    plaintext = file.read()encrypted_text = public_key.encrypt(    plaintext,    padding.OAEP(        mgf=padding.MGF1(algorithm=hashes.SHA256()),        algorithm=hashes.SHA256(),        label=None    ))# 将加密文件写入新文件with open('encrypted.txt', 'wb') as file:    file.write(encrypted_text)# 解密文件with open('encrypted.txt', 'rb') as file:    encrypted_text = file.read()decrypted_text = private_key.decrypt(    encrypted_text,    padding.OAEP(        mgf=padding.MGF1(algorithm=hashes.SHA256()),        algorithm=hashes.SHA256(),        label=None    ))# 将解密文件写入新文件with open('decrypted.txt', 'wb') as file:    file.write(decrypted_text)
文件压缩加密:先对文件进行压缩,然后再进行加密。可以使用zipfile库进行文件压缩,再结合对称或非对称加密方法进行加密。具体方法如下:
import zipfileimport shutilfrom cryptography.fernet import Fernet# 压缩文件shutil.make_archive('archive', 'zip', '.', 'plain.txt')# 加密压缩文件with open('archive.zip', 'rb') as file:    plaintext = file.read()    # 使用对称加密key = Fernet.generate_key()cipher = Fernet(key)encrypted_text = cipher.encrypt(plaintext)# 将加密文件写入新文件with open('encrypted.zip', 'wb') as file:    file.write(encrypted_text)# 解密文件with open('encrypted.zip', 'rb') as file:    encrypted_text = file.read()# 使用对称解密decrypted_text = cipher.decrypt(encrypted_text)# 将解密文件写入新文件with open('decrypted.zip', 'wb') as file:    file.write(decrypted_text)# 解压缩文件with zipfile.ZipFile('decrypted.zip', 'r') as zip_ref:    zip_ref.extractall('.')

注意:在加密和解密文件时,需要确保密钥的安全

 
 
更多>同类维修知识
推荐图文
推荐维修知识
点击排行
网站首页  |  关于我们  |  联系方式  |  用户协议  |  隐私政策  |  网站留言