利用Python给文件夹加密
随着互联网和科技的不断发展,数据泄露已经成为一个严重的问题。为了保护用户和公司的隐私,给文件夹加密已经成为一个必要的步骤。本文将介绍如何利用Python给文件夹加密。
一、生成密钥
加密过程需要密钥来进行加密和解密。可以使用Python内置的hashlib模块来生成一个随机的密钥。
import hashlibkey = hashlib.sha256(b'mysecretkey').digest()
这里使用sha256算法生成一个256位的密钥。用户可以自己设置密钥,也可以使用random模块生成随机的密钥。
二、加密文件夹
在有了密钥之后,就可以对文件夹进行加密。加密的过程可以通过递归的方式对所有的文件进行加密。由于文件加密需要时间,因此需要使用tqdm模块来显示进度条。加密的过程如下:
import os
from cryptography.fernet import Fernet
from tqdm import tqdmdef encrypt_folder(path, key):f = Fernet(key)for root, _, files in os.walk(path):for file in tqdm(files):filepath = os.path.join(root, file)with open(filepath, 'rb+') as f1:data = f1.read()encrypted_data = f.encrypt(data)f1.seek(0)f1.write(encrypted_data)f1.truncate()
这里使用了cryptography.fernet模块来进行加密。递归遍历文件夹中的所有文件,对每个文件进行加密并写回原文件。
三、解密文件夹
如果需要对文件夹进行解密,可以使用下面的代码:
def decrypt_folder(path, key):f = Fernet(key)for root, _, files in os.walk(path):for file in tqdm(files):filepath = os.path.join(root, file)with open(filepath, 'rb+') as f1:data = f1.read()decrypted_data = f.decrypt(data)f1.seek(0)f1.write(decrypted_data)f1.truncate()
这里使用了和加密同样的方式递归遍历文件夹中的所有文件,对每个文件进行解密并写回原文件。
四、完整代码示例
下面给出完整的代码示例:
import os
import hashlib
from cryptography.fernet import Fernet
from tqdm import tqdmdef generate_key():key = hashlib.sha256(b'mysecretkey').digest()return keydef encrypt_folder(path, key):f = Fernet(key)for root, _, files in os.walk(path):for file in tqdm(files):filepath = os.path.join(root, file)with open(filepath, 'rb+') as f1:data = f1.read()encrypted_data = f.encrypt(data)f1.seek(0)f1.write(encrypted_data)f1.truncate()def decrypt_folder(path, key):f = Fernet(key)for root, _, files in os.walk(path):for file in tqdm(files):filepath = os.path.join(root, file)with open(filepath, 'rb+') as f1:data = f1.read()decrypted_data = f.decrypt(data)f1.seek(0)f1.write(decrypted_data)f1.truncate()key = generate_key()
encrypt_folder('/path/to/folder', key)
decrypt_folder('/path/to/folder', key)
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
