欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python給文件夾加解密的實(shí)現(xiàn)

 更新時(shí)間:2023年11月15日 11:25:19   作者:很酷的站長(zhǎng)  
數(shù)據(jù)泄露已經(jīng)成為一個(gè)嚴(yán)重的問(wèn)題,為了保護(hù)用戶和公司的隱私,給文件夾加密已經(jīng)成為一個(gè)必要的步驟,本文主要介紹了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)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python隨機(jī)生成信用卡卡號(hào)的實(shí)現(xiàn)方法

    Python隨機(jī)生成信用卡卡號(hào)的實(shí)現(xiàn)方法

    這篇文章主要介紹了Python隨機(jī)生成信用卡卡號(hào)的實(shí)現(xiàn)方法,可實(shí)現(xiàn)生成信用卡卡號(hào)的功能,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-05-05
  • Python中單線程、多線程和多進(jìn)程的效率對(duì)比實(shí)驗(yàn)實(shí)例

    Python中單線程、多線程和多進(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
  • Python去除PDF水印的實(shí)現(xiàn)示例

    Python去除PDF水印的實(shí)現(xiàn)示例

    本文主要介紹了Python去除PDF水印的實(shí)現(xiàn)示例,思路很簡(jiǎn)單,代碼也很簡(jiǎn)潔。具有一定的參考價(jià)值,感興趣的可以了解一下
    2021-11-11
  • python如何將兩張圖片生成為全景圖片

    python如何將兩張圖片生成為全景圖片

    這篇文章主要為大家詳細(xì)介紹了python如何將兩張圖片生成為全景圖片,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • 淺析Python實(shí)現(xiàn)DFA算法

    淺析Python實(shí)現(xiàn)DFA算法

    DFA全稱為Deterministic Finite Automaton,即確定有窮自動(dòng)機(jī)。特征:有一個(gè)有限狀態(tài)集合和一些從一個(gè)狀態(tài)通向另一個(gè)狀態(tài)的邊,每條邊標(biāo)記有一個(gè)符號(hào),其中一個(gè)狀態(tài)是初態(tài),某些狀態(tài)是終態(tài)。不同于不確定的有限自動(dòng)機(jī),DFA中不會(huì)有從同一狀態(tài)出發(fā)的兩條邊標(biāo)志有相同的符號(hào)
    2021-06-06
  • python爬取足球直播吧五大聯(lián)賽積分榜

    python爬取足球直播吧五大聯(lián)賽積分榜

    這篇文章主要為大家詳細(xì)介紹了python爬取足球直播吧五大聯(lián)賽積分榜,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • 淺談numpy中l(wèi)inspace的用法 (等差數(shù)列創(chuàng)建函數(shù))

    淺談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-06
  • python中csv文件數(shù)據(jù)顏色設(shè)置方式

    python中csv文件數(shù)據(jù)顏色設(shè)置方式

    這篇文章主要介紹了python中csv文件數(shù)據(jù)顏色設(shè)置方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • Python代碼太長(zhǎng)換行的實(shí)現(xiàn)

    Python代碼太長(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-07
  • Pandas時(shí)間序列基礎(chǔ)詳解(轉(zhuǎn)換,索引,切片)

    Pandas時(shí)間序列基礎(chǔ)詳解(轉(zhuǎn)換,索引,切片)

    今天小編就為大家分享一篇Pandas時(shí)間序列基礎(chǔ)詳解(轉(zhuǎn)換,索引,切片),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-02-02

最新評(píng)論