最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用python加密主機(jī)文件幾種方法實現(xiàn)

 更新時間:2023年02月09日 15:25:25   作者:一青一檸  
本文主要介紹了使用python加密主機(jī)文件幾種方法實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

數(shù)據(jù)加密是一種保護(hù)數(shù)據(jù)安全的技術(shù),通過對數(shù)據(jù)進(jìn)行編碼,使得未經(jīng)授權(quán)的用戶無法讀取或改動數(shù)據(jù)。

加密是通過使用加密算法和密鑰實現(xiàn)的。加密算法是一種特定的算法,可以將數(shù)據(jù)編碼成不可讀的形式,密鑰是一串字符串,用于控制加密和解密的過程。加密后的數(shù)據(jù)只能使用對應(yīng)的密鑰解密。

加密在保護(hù)數(shù)據(jù)的安全性方面非常重要,尤其是在互聯(lián)網(wǎng)和移動設(shè)備環(huán)境中,用戶的隱私數(shù)據(jù)容易遭到黑客的攻擊。加密技術(shù)不僅可以保護(hù)數(shù)據(jù)的隱私,還可以保護(hù)數(shù)據(jù)的完整性,確保數(shù)據(jù)不被篡改。

在企業(yè)環(huán)境中,數(shù)據(jù)加密也被廣泛應(yīng)用于保護(hù)公司數(shù)據(jù)的安全。從合同到秘密文件,加密技術(shù)可以保護(hù)公司數(shù)據(jù)不被未經(jīng)授權(quán)的人員查看。

總的來說,數(shù)據(jù)加密是一種重要的保護(hù)數(shù)據(jù)安全的技術(shù),對于任何用戶和企業(yè)都非常重要。

要求:利用python對某個目錄的全部文件進(jìn)行加密,密鑰由用戶的輸入的字符串經(jīng)過變化而生成,封裝為一個函數(shù),輸入?yún)?shù)有目錄路徑和用戶輸入的字符串。

以下是使用 Python 實現(xiàn)的一種簡單的文件加密方案:

import os
import hashlib

def encrypt_directory(directory, password):
? ? for root, dirs, files in os.walk(directory):
? ? ? ? for file in files:
? ? ? ? ? ? path = os.path.join(root, file)
? ? ? ? ? ? with open(path, 'rb') as f:
? ? ? ? ? ? ? ? data = f.read()
? ? ? ? ? ? key = hashlib.sha256(password.encode()).hexdigest()
? ? ? ? ? ? encrypted_data = bytearray(x ^ ord(key[i % len(key)]) for i, x in enumerate(data))
? ? ? ? ? ? with open(path, 'wb') as f:
? ? ? ? ? ? ? ? f.write(encrypted_data)

該函數(shù)接收兩個參數(shù):目錄路徑和用戶輸入的字符串。它通過使用 os.walk 對目錄下的每個文件進(jìn)行加密,并將加密后的數(shù)據(jù)寫回文件。加密使用了異或操作,密鑰是對用戶輸入的字符串進(jìn)行 SHA-256 哈希的十六進(jìn)制字符串。

以下是對上面的加密函數(shù)的對應(yīng)解密函數(shù):

scssCopy code
def decrypt_directory(directory, password):
    for root, dirs, files in os.walk(directory):
        for file in files:
            path = os.path.join(root, file)
            with open(path, 'rb') as f:
                encrypted_data = f.read()
            key = hashlib.sha256(password.encode()).hexdigest()
            data = bytearray(x ^ ord(key[i % len(key)]) for i, x in enumerate(encrypted_data))
            with open(path, 'wb') as f:
                f.write(data)

該函數(shù)與上面的加密函數(shù)類似,但是它讀入加密后的文件,并使用相同的密鑰對數(shù)據(jù)進(jìn)行異或操作,以獲得原始文件。

將上述代碼更換加密算法,使用AES加密,代碼如下:

import os
import hashlib
from Crypto.Cipher import AES

def encrypt_directory(directory, password):
? ? # 計算密鑰
? ? key = hashlib.sha256(password.encode()).digest()[:16]
? ? for root, dirs, files in os.walk(directory):
? ? ? ? for file in files:
? ? ? ? ? ? path = os.path.join(root, file)
? ? ? ? ? ? # 讀取文件
? ? ? ? ? ? with open(path, 'rb') as f:
? ? ? ? ? ? ? ? data = f.read()
? ? ? ? ? ? # 對數(shù)據(jù)進(jìn)行補(bǔ)位
? ? ? ? ? ? padding_length = 16 - len(data) % 16
? ? ? ? ? ? data += bytes([padding_length] * padding_length)
? ? ? ? ? ? # 初始化加密器
? ? ? ? ? ? cipher = AES.new(key, AES.MODE_ECB)
? ? ? ? ? ? # 加密數(shù)據(jù)
? ? ? ? ? ? encrypted_data = cipher.encrypt(data)
? ? ? ? ? ? # 將加密后的數(shù)據(jù)寫回文件
? ? ? ? ? ? with open(path, 'wb') as f:
? ? ? ? ? ? ? ? f.write(encrypted_data)

def decrypt_directory(directory, password):
? ? # 計算密鑰
? ? key = hashlib.sha256(password.encode()).digest()[:16]
? ? for root, dirs, files in os.walk(directory):
? ? ? ? for file in files:
? ? ? ? ? ? path = os.path.join(root, file)
? ? ? ? ? ? # 讀取文件
? ? ? ? ? ? with open(path, 'rb') as f:
? ? ? ? ? ? ? ? encrypted_data = f.read()
? ? ? ? ? ? # 初始化解密器
? ? ? ? ? ? cipher = AES.new(key, AES.MODE_ECB)
? ? ? ? ? ? # 解密數(shù)據(jù)
? ? ? ? ? ? data = cipher.decrypt(encrypted_data)
? ? ? ? ? ? # 刪除補(bǔ)位數(shù)據(jù)
? ? ? ? ? ? padding_length = data[-1]
? ? ? ? ? ? data = data[:-padding_length]
? ? ? ? ? ? # 將解密后的數(shù)據(jù)寫回文件
? ? ? ? ? ? with open(path, 'wb') as f:
? ? ? ? ? ? ? ? f.write(data)

注:上面的代碼僅供參考,不建議在生產(chǎn)環(huán)境中使用。AES ECB 模式并不是很安全,應(yīng)該使用其他模式。

或者使用非對稱加密:

這里使用RSA加密算法實現(xiàn)數(shù)據(jù)的加密解密:

import os
import rsa

def encrypt_file(file_path, public_key_file):
? ? """使用RSA算法加密文件
? ??
? ? 參數(shù):
? ? file_path: 需要加密的文件路徑
? ? public_key_file: 公鑰文件路徑
? ??
? ? 返回值:
? ? 無
? ? """
? ? # 讀取文件內(nèi)容
? ? with open(file_path, "rb") as file:
? ? ? ? file_content = file.read()
? ? # 讀取公鑰
? ? with open(public_key_file, "rb") as key_file:
? ? ? ? public_key = rsa.PublicKey.load_pkcs1(key_file.read())
? ? # 加密文件內(nèi)容
? ? encrypted_content = rsa.encrypt(file_content, public_key)
? ? # 將加密后的內(nèi)容寫入文件
? ? with open(file_path, "wb") as file:
? ? ? ? file.write(encrypted_content)

def decrypt_file(file_path, private_key_file, password):
? ? """使用RSA算法解密文件
? ??
? ? 參數(shù):
? ? file_path: 需要解密的文件路徑
? ? private_key_file: 私鑰文件路徑
? ? password: 私鑰文件密碼
? ??
? ? 返回值:
? ? 無
? ? """
? ? # 讀取文件內(nèi)容
? ? with open(file_path, "rb") as file:
? ? ? ? encrypted_content = file.read()
? ? # 讀取私鑰
? ? with open(private_key_file, "rb") as key_file:
? ? ? ? private_key = rsa.PrivateKey.load_pkcs1(key_file.read(), password)
? ? # 解密文件內(nèi)容
? ? file_content = rsa.decrypt(encrypted_content, private_key)
? ? # 將解密后的內(nèi)容寫入文件
? ? with open(file_path, "wb") as file:
? ? ? ? file.write(file_content)

需要注意的是,RSA加密的效率較低,適用于加密少量數(shù)據(jù),如對文件進(jìn)行加密

到此這篇關(guān)于使用python加密主機(jī)文件幾種方法實現(xiàn)的文章就介紹到這了,更多相關(guān)python加密主機(jī)文件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Flask之閃現(xiàn)flash原理及使用

    Flask之閃現(xiàn)flash原理及使用

    Flask中的閃現(xiàn)是一種在請求之間傳遞消息的機(jī)制,本文就來介紹一下Flask之閃現(xiàn)flash原理及使用,具有一定的參考價值,感興趣的可以了解一下
    2023-12-12
  • Pandas 處理DataFrame中的inf值實現(xiàn)

    Pandas 處理DataFrame中的inf值實現(xiàn)

    Inf 表示正無窮大或負(fù)無窮大,通常是在數(shù)學(xué)計算中產(chǎn)生的結(jié)果,本文主要介紹了Pandas 處理DataFrame中的inf值實現(xiàn),具有一定的參考價值,感興趣的可以了解一下
    2024-04-04
  • 七個Python必備的GUI庫

    七個Python必備的GUI庫

    這篇文章主要介紹了七個Python必備的GUI庫,幫助大家更好的理解和學(xué)習(xí)使用python制作gui程序,感興趣的朋友可以了解下
    2021-04-04
  • python使用win32com在百度空間插入html元素示例

    python使用win32com在百度空間插入html元素示例

    這篇文章主要介紹了python使用win32com在百度空間插入html元素的示例,大家參考使用吧
    2014-02-02
  • Python針對給定字符串求解所有子序列是否為回文序列的方法

    Python針對給定字符串求解所有子序列是否為回文序列的方法

    這篇文章主要介紹了Python針對給定字符串求解所有子序列是否為回文序列的方法,涉及Python針對字符串的遍歷、判斷、運算相關(guān)操作技巧,需要的朋友可以參考下
    2018-04-04
  • pyinstaller執(zhí)行報錯的問題解決

    pyinstaller執(zhí)行報錯的問題解決

    有時候,PyInstaller可能無法正確識別和打包所有的依賴項,導(dǎo)致名稱錯誤,本文主要介紹了pyinstaller執(zhí)行報錯的解決方案,感興趣的可以了解一下
    2023-11-11
  • python 爬取小說并下載的示例

    python 爬取小說并下載的示例

    這篇文章主要介紹了python 爬取小說并下載的示例,幫助大家更好的理解和學(xué)習(xí)python爬蟲,感興趣的朋友可以了解下
    2020-12-12
  • python協(xié)程異步IO中asyncio的使用

    python協(xié)程異步IO中asyncio的使用

    這篇文章主要介紹了python異步編程之a(chǎn)syncio的使用,python中異步IO操作是通過asyncio來實現(xiàn)的,為了更加詳細(xì)說明asyncio,我們先從協(xié)程的最基礎(chǔ)開始講解
    2023-12-12
  • Pytorch平均池化nn.AvgPool2d()使用方法實例

    Pytorch平均池化nn.AvgPool2d()使用方法實例

    平均池化層,又叫平均匯聚層,下面這篇文章主要給大家介紹了關(guān)于Pytorch平均池化nn.AvgPool2d()使用方法的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-02-02
  • python末尾逗號導(dǎo)致返回結(jié)果是一個元組的問題

    python末尾逗號導(dǎo)致返回結(jié)果是一個元組的問題

    在Python中,除非特別需要返回或傳參元組,一般不推薦在語句末尾添加逗號,應(yīng)該注意檢查是否存在末尾逗號導(dǎo)致的這些副作用,這篇文章主要介紹了python末尾逗號導(dǎo)致返回結(jié)果是一個元組,需要的朋友可以參考下
    2023-09-09

最新評論

喀喇沁旗| 文化| 屏山县| 江陵县| 玛纳斯县| 余姚市| 金坛市| 大足县| 广南县| 昭平县| 万源市| 周口市| 金坛市| 吉木萨尔县| 涟水县| 成安县| 正定县| 临高县| 洞头县| 康定县| 汤原县| 双流县| 锡林郭勒盟| 焉耆| 湘潭县| 临朐县| 江城| 梅州市| 柞水县| 黎川县| 洪雅县| 吴忠市| 平果县| 西城区| 东海县| 北碚区| 炉霍县| 华亭县| 宁强县| 咸阳市| 泾源县|