真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

基于python實(shí)現(xiàn)文件加密功能-創(chuàng)新互聯(lián)

這篇文章主要介紹了基于python實(shí)現(xiàn)文件加密功能,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

創(chuàng)新互聯(lián)公司-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比內(nèi)蒙古網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式內(nèi)蒙古網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋內(nèi)蒙古地區(qū)。費(fèi)用合理售后完善,10余年實(shí)體公司更值得信賴。

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

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

基礎(chǔ)知識

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

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

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

b ^ b = 0

異或操作滿足交換律

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

0 與 a 的異或?yàn)?a

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

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

原理

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

加密操作:

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

解密操作:

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

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

from secrets import token_bytes

def random_key(length):
  key = token_bytes(nbytes=length)
  key_int = int.from_bytes(key, 'big')
  return key_int

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。


當(dāng)前題目:基于python實(shí)現(xiàn)文件加密功能-創(chuàng)新互聯(lián)
當(dāng)前路徑:http://weahome.cn/article/coiedj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部