<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
資料加密是一種保護資料安全的技術,通過對資料進行編碼,使得未經授權的使用者無法讀取或改動資料。
加密是通過使用加密演演算法和金鑰實現的。加密演演算法是一種特定的演演算法,可以將資料編碼成不可讀的形式,金鑰是一串字串,用於控制加密和解密的過程。加密後的資料只能使用對應的金鑰解密。
加密在保護資料的安全性方面非常重要,尤其是在網際網路和移動裝置環境中,使用者的隱私資料容易遭到駭客的攻擊。加密技術不僅可以保護資料的隱私,還可以保護資料的完整性,確保資料不被篡改。
在企業環境中,資料加密也被廣泛應用於保護公司資料的安全。從合同到祕密檔案,加密技術可以保護公司資料不被未經授權的人員檢視。
總的來說,資料加密是一種重要的保護資料安全的技術,對於任何使用者和企業都非常重要。
要求:利用python對某個目錄的全部檔案進行加密,金鑰由使用者的輸入的字串經過變化而生成,封裝為一個函數,輸入引數有目錄路徑和使用者輸入的字串。
以下是使用 Python 實現的一種簡單的檔案加密方案:
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)
該函數接收兩個引數:目錄路徑和使用者輸入的字串。它通過使用 os.walk 對目錄下的每個檔案進行加密,並將加密後的資料寫回檔案。加密使用了互斥或操作,金鑰是對使用者輸入的字串進行 SHA-256 雜湊的十六進位制字串。
以下是對上面的加密函數的對應解密函數:
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)
該函數與上面的加密函數類似,但是它讀入加密後的檔案,並使用相同的金鑰對資料進行互斥或操作,以獲得原始檔案。
將上述程式碼更換加密演演算法,使用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() # 對資料進行補位 padding_length = 16 - len(data) % 16 data += bytes([padding_length] * padding_length) # 初始化加密器 cipher = AES.new(key, AES.MODE_ECB) # 加密資料 encrypted_data = cipher.encrypt(data) # 將加密後的資料寫回檔案 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) # 解密資料 data = cipher.decrypt(encrypted_data) # 刪除補位資料 padding_length = data[-1] data = data[:-padding_length] # 將解密後的資料寫回檔案 with open(path, 'wb') as f: f.write(data)
注:上面的程式碼僅供參考,不建議在生產環境中使用。AES ECB 模式並不是很安全,應該使用其他模式。
或者使用非對稱加密:
這裡使用RSA加密演演算法實現資料的加密解密:
import os import rsa def encrypt_file(file_path, public_key_file): """使用RSA演演算法加密檔案 引數: file_path: 需要加密的檔案路徑 public_key_file: 公鑰檔案路徑 返回值: 無 """ # 讀取檔案內容 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()) # 加密檔案內容 encrypted_content = rsa.encrypt(file_content, public_key) # 將加密後的內容寫入檔案 with open(file_path, "wb") as file: file.write(encrypted_content) def decrypt_file(file_path, private_key_file, password): """使用RSA演演算法解密檔案 引數: file_path: 需要解密的檔案路徑 private_key_file: 私鑰檔案路徑 password: 私鑰檔案密碼 返回值: 無 """ # 讀取檔案內容 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) # 解密檔案內容 file_content = rsa.decrypt(encrypted_content, private_key) # 將解密後的內容寫入檔案 with open(file_path, "wb") as file: file.write(file_content)
需要注意的是,RSA加密的效率較低,適用於加密少量資料,如對檔案進行加密
到此這篇關於使用python加密主機檔案几種方法實現的文章就介紹到這了,更多相關python加密主機檔案內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45