Python给文件夹加解密的实现
随着互联网和科技的不断发展,数据泄露已经成为一个严重的问题。为了保护用户和公司的隐私,给文件夹加密已经成为一个必要的步骤。本文将介绍如何利用Python给文件夹加密。
一、生成密钥
加密过程需要密钥来进行加密和解密。可以使用Python内置的hashlib
模块来生成一个随机的密钥。
import hashlib key = hashlib.sha256(b'mysecretkey').digest()
这里使用sha256
算法生成一个256位的密钥。用户可以自己设置密钥,也可以使用random
模块生成随机的密钥。
二、加密文件夹
在有了密钥之后,就可以对文件夹进行加密。加密的过程可以通过递归的方式对所有的文件进行加密。由于文件加密需要时间,因此需要使用tqdm
模块来显示进度条。加密的过程如下:
import os from cryptography.fernet import Fernet from tqdm import tqdm def 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 tqdm def generate_key(): key = hashlib.sha256(b'mysecretkey').digest() return key def 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)
到此这篇关于Python给文件夹加解密的实现的文章就介绍到这了,更多相关Python 文件夹加解密内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
python使用pika库调用rabbitmq交换机模式详解
这篇文章主要介绍了python使用pika库调用rabbitmq交换机模式详解,文章围绕主题展开详细的内容介绍,具有一定的参考价值,感兴趣的小伙伴可以参考一下2022-08-08Python的Flask框架中@app.route的用法教程
这篇文章主要介绍了Python的Flask框架中@app.route的用法教程,包括相关的正则表达式讲解,是Flask学习过程当中的基础知识,需要的朋友可以参考下2015-03-03Python matplotlib seaborn绘图教程详解
Seaborn是在matplotlib的基础上进行了更高级的API封装,从而使得作图更加容易,在大多数情况下使用seaborn就能做出很具有吸引力的图。本文将详细讲解如何利用Seaborn绘制图表,需要的可以参考一下2022-03-03
最新评论