日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

如何用Python 加密文件

瀏覽:190日期:2022-07-11 16:43:49

生活中,有時候我們需要對一些重要的文件進行加密,Python 提供了諸如 hashlib,base64 等便于使用的加密庫。

但對于日常學習而言,我們可以借助異或操作,實現(xiàn)一個簡單的文件加密程序,從而強化自身的編程能力。

基礎知識

在 Python 中異或操作符為:^,也可以記作 XOR。按位異或的意思是:相同值異或為 0,不同值異或為 1。具體來講,有四種可能:0 ^ 0 = 0,0 ^ 1 = 1, 1 ^ 0 = 1, 1 ^ 1 = 0。我們還可總結出規(guī)律(A 為 0 或 1):0 和 A 異或為 A本身;1 和 A 異或為 A 反。

讓我們想看看一位二進制數(shù)滿足的性質:

一位二進制數(shù)與自身的異或值為 0

b ^ b = 0

異或操作滿足交換律

a ^ b ^ c = a ^ (b ^ c) = (a ^ b) ^ c

0 與 a 的異或為 a

(a ^ b) ^ b = a ^ (b ^ b) = a ^ 0 = a

易知,對任意長二進制數(shù)都滿足上述性質。

原理

通過了解異或操作的性質,加密原理就非常清晰了。

加密操作:

首先將文件轉換成二進制數(shù),再生成與該二進制數(shù)等長的隨機密鑰,將二進制數(shù)與密鑰進行異或操作,得到加密后的二進制數(shù)。

解密操作:

將加密后的二進制程序與密鑰進行異或操作,就得到原二進制數(shù),最后將原二進制數(shù)恢復成文本文件。

生成隨機密鑰:

secrets 庫是 Python 3.6 引入的偽隨機數(shù)模塊,適合生成隨機密鑰。token_bytes 函數(shù)接受一個 int 參數(shù),用于指定隨機字節(jié)串的長度。int.from_bytes 把字節(jié)串轉換為 int,也就是我們需要的二進制數(shù)。

from secrets import token_bytesdef random_key(length): key = token_bytes(nbytes=length) key_int = int.from_bytes(key, ’big’) return key_int

加密單元:

encrypt 函數(shù)接受一個 str 對象,返回元組 (int, int)。通過 encode 方法,我們將字符串編碼成字節(jié)串。int.from_bytes 函數(shù)將字節(jié)串轉換為 int 對象。最后對二進制對象和隨機密鑰進行異或操作,就得到了加密文本。

def encrypt(raw): raw_bytes = raw.encode() raw_int = int.from_bytes(raw_bytes, ’big’) key_int = random_key(len(raw_bytes)) return raw_int ^ key_int, key_int

解密單元:

decrypt 接受兩個 int 對象,分別為加密文本和隨機密鑰。首先對兩者進行異或操作,計算解密出來的 int 對象所占比特數(shù)。decrypted.bit_length 函數(shù)得到的是二進制數(shù)的位數(shù),除以 8 可以得到所占比特大小。為了防止,1 ~ 7 位的二進制數(shù)整除 8 得到 0,所以要加上 7,然后再進行整除 8 的操作。使用 int.to_bytes 函數(shù)將解密之后的 int 的對象轉換成 bytes 對象。最后通過 decode 方法,將字節(jié)串轉換成字符串。

def decrypt(encrypted, key_int): decrypted = encrypted ^ key_int length = (decrypted.bit_length() + 7) // 8 decrypted_bytes = int.to_bytes(decrypted, length, ’big’) return decrypted_bytes.decode()

利用上述函數(shù),我們可以很輕松對文本文件進行加密、解密操作。

>>> raw = ’畫圖省識春風面,環(huán)?空歸夜月魂’>>> encrypted = encrypt(raw)>>> encrypted(217447100157746604585..., 9697901906831571319...)>>> decrypt(*encrypted)’畫圖省識春風面,環(huán)?空歸夜月魂’

加密文本文件

path 為待加密文件的地址,如果不指定密鑰地址,則在該目錄下新建目錄和文件。

import jsonfrom pathlib import Pathdef encrypt_file(path, key_path=None, *, encoding=’utf-8’): path = Path(path) cwd = path.cwd() / path.name.split(’.’)[0] path_encrypted = cwd / path.name if key_path is None: key_path = cwd / ’key’ if not cwd.exists(): cwd.mkdir() path_encrypted.touch() key_path.touch() with path.open(’rt’, encoding=encoding) as f1, path_encrypted.open(’wt’, encoding=encoding) as f2, key_path.open(’wt’, encoding=encoding) as f3: encrypted, key = encrypt(f1.read()) json.dump(encrypted, f2) json.dump(key, f3)

解密文件

def decrypt_file(path_encrypted, key_path=None, *, encoding=’utf-8’): path_encrypted = Path(path_encrypted) cwd = path_encrypted.cwd() path_decrypted = cwd / ’decrypted’ if not path_decrypted.exists(): path_decrypted.mkdir() path_decrypted /= path_encrypted.name path_decrypted.touch() if key_path is None: key_path = cwd / ’key’ with path_encrypted.open(’rt’, encoding=encoding) as f1, key_path.open(’rt’, encoding=encoding) as f2, path_decrypted.open(’wt’, encoding=encoding) as f3: decrypted = decrypt(json.load(f1), json.load(f2)) f3.write(decrypted)

執(zhí)行完加密、解密文件操作,得到的解密文件與原文件相同,示意圖如下:

如何用Python 加密文件

以上就是如何用Python 加密文件的詳細內容,更多關于Python 加密文件的資料請關注好吧啦網其它相關文章!

標簽: Python 編程
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
美女视频网站久久| av中文资源在线资源免费观看| 黄色在线网站噜噜噜| 亚洲黄色网址| 欧美成人高清| 国产一级久久| 亚洲综合专区| 欧美激情日韩| 久久久久99| 蜜臀久久久久久久| 国产精品亚洲产品| 久久激情中文| 亚洲人成亚洲精品| 久久精品国产99| 日产精品一区| 男女性色大片免费观看一区二区 | 日本va欧美va瓶| 日本三级亚洲精品| 精品丝袜久久| 午夜精品免费| 国产精品香蕉| 午夜久久久久| 美女尤物国产一区| 国精品一区二区| 亚洲最新av| 国产+成+人+亚洲欧洲在线| 女人天堂亚洲aⅴ在线观看| 欧美在线观看天堂一区二区三区| 国产激情在线播放| 免费一级片91| 97精品中文字幕| 亚洲精品女人| 久久精品一区二区不卡| 日韩国产成人精品| 欧美日韩水蜜桃| 国产乱码精品一区二区三区亚洲人 | av在线日韩| 综合干狼人综合首页| 水蜜桃久久夜色精品一区| 蜜芽一区二区三区| 九九精品调教| 久久激情av| 国产精品美女| 美女一区网站| 国产日韩免费| av不卡在线看| 福利片在线一区二区| 美日韩精品视频| 欧美www视频在线观看| 亚洲+小说+欧美+激情+另类| 深夜福利视频一区二区| 久久黄色影视| 亚洲香蕉久久| 欧美日韩黑人| 日韩成人综合| 精品视频黄色| 欧美专区一区| 亚洲欧美激情诱惑| 在线精品亚洲欧美日韩国产| 国产一区 二区| 久久亚洲图片| 国精品一区二区| 国产一区不卡| 欧美偷窥清纯综合图区| 麻豆91精品| 99国产精品久久久久久久成人热| 久久男人天堂| 久久精品国产一区二区| 69堂精品视频在线播放| 蜜臀av一区二区在线免费观看| 韩日一区二区三区| 日韩精品久久久久久久电影99爱| 精品少妇一区| 精品视频亚洲| 高清av一区| 高清一区二区| 丁香六月综合| 久久一区精品| 91福利精品在线观看| 蜜桃视频免费观看一区| 伊人久久亚洲美女图片| 婷婷综合五月| 黄色成人91| 亚洲尤物在线| 久久av一区| 免费观看在线色综合| 免费看黄色91| 午夜久久av| 日韩精品一区二区三区中文| 一区二区国产在线| 日韩高清一级| 国产亚洲一区二区三区不卡| 日韩成人午夜精品| 欧美精品中文字幕亚洲专区| 亚洲tv在线| 青青在线精品| 精品国产一区二区三区噜噜噜| 欧美国产极品| 精品日韩一区| 日韩免费在线| 欧美91视频| 亚洲欧美成人综合| 欧美一区二区三区免费看| 国产高清精品二区| 成人午夜网址| 久久蜜桃av| 蜜桃av一区二区在线观看| 日本精品一区二区三区在线观看视频| 天堂久久一区| 欧美精品不卡| av资源亚洲| 在线视频免费在线观看一区二区| 美国三级日本三级久久99 | 蜜桃av一区二区| 欧美精品国产一区| 麻豆成人91精品二区三区| 国产成人精品三级高清久久91| 日韩欧美国产精品综合嫩v| 欧美日韩国产精品一区二区亚洲| 伊人精品久久| 久久免费精品| 国产盗摄——sm在线视频| 欧美福利一区| 日本特黄久久久高潮| 高清av一区| 久久亚洲国产精品一区二区| 国产欧美日韩影院| 日韩不卡免费高清视频| 免费在线观看精品| 精品国产精品国产偷麻豆| 激情欧美一区二区三区| 日韩中文一区二区| 国产一区二区三区免费在线 | 欧美激情麻豆| 99久久激情| 日本成人中文字幕| 日韩中文欧美| 日韩欧美中文字幕电影| av免费不卡国产观看| 丝袜a∨在线一区二区三区不卡| 欧美日韩一区二区三区在线电影| 国产欧洲在线| 中文字幕日韩亚洲| 欧美xxxx中国| 亚洲免费福利一区| 九九精品调教| 国产亚洲一区| 亚洲一区二区三区四区五区午夜 | 国产精品xxxav免费视频| 欧美成人基地| 国产日产精品_国产精品毛片 | 亚洲图片久久| 黄色在线网站噜噜噜| 日本亚州欧洲精品不卡| 电影亚洲精品噜噜在线观看| 日本麻豆一区二区三区视频| 久久久久一区| 97se亚洲| 91精品1区| 国内精品麻豆美女在线播放视频| 香蕉成人久久| 人人精品亚洲| 久久av超碰| 日韩中文字幕91| 日韩免费视频| 国产精品porn| 四虎精品一区二区免费| 在线日韩中文| 国产精品99久久精品| 欧美中文一区| 亚洲我射av| 亚洲免费网址| 亚洲播播91| 国产精选一区| 亚洲精品乱码久久久久久蜜桃麻豆 | 精品国产aⅴ| 日韩高清成人在线| 免费观看久久久4p| 99国产精品久久久久久久| 999久久久91| 久久天堂影院| 国产日产精品_国产精品毛片 | 九九九精品视频| 久久国际精品| 婷婷综合成人| 蜜臀av一区二区在线免费观看| 日韩精品水蜜桃| www.九色在线| 国产一区二区三区探花| 国产精品乱战久久久| 日韩av电影一区| 亚洲日产国产精品| 红桃视频欧美| 日韩视频一区| 日韩一区二区免费看| 99热免费精品| 丝袜亚洲另类欧美| 日韩在线观看一区二区| 日韩精品一二三区| 亚洲人成在线影院|