Python給文件夾加解密的實(shí)現(xiàn)
隨著互聯(lián)網(wǎng)和科技的不斷發(fā)展,數(shù)據(jù)泄露已經(jīng)成為一個(gè)嚴(yán)重的問(wèn)題。為了保護(hù)用戶和公司的隱私,給文件夾加密已經(jīng)成為一個(gè)必要的步驟。本文將介紹如何利用Python給文件夾加密。
一、生成密鑰
加密過(guò)程需要密鑰來(lái)進(jìn)行加密和解密。可以使用Python內(nèi)置的hashlib
模塊來(lái)生成一個(gè)隨機(jī)的密鑰。
import hashlib key = hashlib.sha256(b'mysecretkey').digest()
這里使用sha256
算法生成一個(gè)256位的密鑰。用戶可以自己設(shè)置密鑰,也可以使用random
模塊生成隨機(jī)的密鑰。
二、加密文件夾
在有了密鑰之后,就可以對(duì)文件夾進(jìn)行加密。加密的過(guò)程可以通過(guò)遞歸的方式對(duì)所有的文件進(jìn)行加密。由于文件加密需要時(shí)間,因此需要使用tqdm
模塊來(lái)顯示進(jìn)度條。加密的過(guò)程如下:
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
模塊來(lái)進(jìn)行加密。遞歸遍歷文件夾中的所有文件,對(duì)每個(gè)文件進(jìn)行加密并寫(xiě)回原文件。
三、解密文件夾
如果需要對(duì)文件夾進(jìn)行解密,可以使用下面的代碼:
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()
這里使用了和加密同樣的方式遞歸遍歷文件夾中的所有文件,對(duì)每個(gè)文件進(jìn)行解密并寫(xiě)回原文件。
四、完整代碼示例
下面給出完整的代碼示例:
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)
到此這篇關(guān)于Python給文件夾加解密的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)Python 文件夾加解密內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Python實(shí)現(xiàn)加解密,編碼解碼和進(jìn)制轉(zhuǎn)換(最全版)
- python實(shí)現(xiàn)AES算法及AES-CFB8加解密源碼
- python des,aes,rsa加解密的實(shí)現(xiàn)
- Python 實(shí)現(xiàn)RSA加解密文本文件
- python實(shí)現(xiàn)凱撒密碼、凱撒加解密算法
- Python實(shí)現(xiàn)密鑰密碼(加解密)實(shí)例詳解
- 利用python實(shí)現(xiàn)凱撒密碼加解密功能
- Python3加密解密庫(kù)Crypto的RSA加解密和簽名/驗(yàn)簽實(shí)現(xiàn)方法實(shí)例
- Python內(nèi)置方法實(shí)現(xiàn)字符串的秘鑰加解密(推薦)
- python實(shí)現(xiàn)AES和RSA加解密的方法
- python實(shí)現(xiàn)柵欄加解密 支持密鑰加密
- python下讀取公私鑰做加解密實(shí)例詳解
相關(guān)文章
Python隨機(jī)生成信用卡卡號(hào)的實(shí)現(xiàn)方法
這篇文章主要介紹了Python隨機(jī)生成信用卡卡號(hào)的實(shí)現(xiàn)方法,可實(shí)現(xiàn)生成信用卡卡號(hào)的功能,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-05-05Python中單線程、多線程和多進(jìn)程的效率對(duì)比實(shí)驗(yàn)實(shí)例
這篇文章主要介紹了Python單線程多線程和多進(jìn)程效率對(duì)比,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-05-05淺談numpy中l(wèi)inspace的用法 (等差數(shù)列創(chuàng)建函數(shù))
下面小編就為大家?guī)?lái)一篇淺談numpy中l(wèi)inspace的用法 (等差數(shù)列創(chuàng)建函數(shù))。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-06-06python中csv文件數(shù)據(jù)顏色設(shè)置方式
這篇文章主要介紹了python中csv文件數(shù)據(jù)顏色設(shè)置方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-02-02Python代碼太長(zhǎng)換行的實(shí)現(xiàn)
這篇文章主要介紹了Python代碼太長(zhǎng)換行的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07Pandas時(shí)間序列基礎(chǔ)詳解(轉(zhuǎn)換,索引,切片)
今天小編就為大家分享一篇Pandas時(shí)間序列基礎(chǔ)詳解(轉(zhuǎn)換,索引,切片),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-02-02