<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
因為一些懂得都懂的原因,我的父母對於我電腦上的檔案內容特別感興趣。為了防止資訊洩露,我連夜用Python做了一個檔案加密器,防止我的重要資訊被洩露。
github:https://github.com/13337356453/FileCipher
GitHub上的資源是Python原始碼
為了方便操作,我用PyQt做了視窗。執行起來是這樣的。
加密效果還是很不錯了
對於我來說,程式中gui的編寫算比較簡單。困難的是加密演演算法的編寫。
先把密碼的程式碼貼出來,在詳細講解。
class Cipher: key = "" def __init__(self, key): self.key = key def setKey(self, key): self.key = key def getKey(self): return self.key def parseKey(self, key): # 處理金鑰 if key != "": o = 0 for k in key: n = 0 i = str(ord(k)) for t in i: n += int(t) o += n # 使金鑰範圍控制在10-100之間 while True: if o < 10: o = int(o * 2) elif o > 100: o = int(o / 2) else: return o return def getOdd(self, max): return [i for i in range(1, max + 1) if i % 2 == 1] def encrypt(self, data): # 加密演演算法 if data == "": return result = "" length = len(data) # 獲取資料長度 a = [ord(x) for x in data] # 判斷是否為4的倍數 remainder = length % 4 # 餘數 if remainder != 0: b = 4 - remainder for c in range(b): a.append(0) # 第一次分組 groups = [] d = len(a) // 2 e1 = a[:d] e2 = a[d:] indexs = self.getOdd(d) groups.append([e1[i - 1] for i in indexs]) groups.append([e1[i] for i in indexs]) groups.append([e2[i - 1] for i in indexs]) groups.append([e2[i] for i in indexs]) # 第二次分組 f1 = groups[0] + groups[3] f2 = groups[1] + groups[2] # 第一次加密 keycode1 = self.parseKey(self.getKey()) g = [] for h in f1: i = h + keycode1 j = chr(i) g.append(i) result += j # 第二次獲取keycode k = str(sum(g)) keycode2 = self.parseKey(k) # 第二次加密 for l in f2: m = l + keycode2 n = chr(m) result += n # 加密完成 return result def decrypt(self, data): # 解密演演算法 if data == "": return result = "" # 獲取keycode1 keycode1 = self.parseKey(self.getKey()) # 第一次解密 a = len(data) // 2 b1 = data[:a] b2 = data[a:] c = [ord(d) for d in b1] e = [f - keycode1 for f in c] # 獲取keycode2 g = str(sum(c)) keycode2 = self.parseKey(g) # 第二次解密 h = [ord(i) for i in b2] j = [k - keycode2 for k in h] # f1對應e , f2對應j # 第一次分組 k = len(e) // 2 group1 = e[:k] group4 = e[k:] group2 = j[:k] group3 = j[k:] # 第二次分組 datalength = len(group1) + len(group2) + len(group3) + len(group4) # 資料長度 l = datalength // 4 m = [] for n in range(l): m.append(group1[n]) m.append(group2[n]) o=[] for p in range(l): o.append(group3[p]) o.append(group4[p]) # 資料拼接 q=m+o for r in q: result+=chr(r) # 返回結果 return result
大概的處理過程是這樣的
隨便畫的,大概就是這個流程,有什麼錯誤也懶得管了
先將金鑰進行處理,把金鑰轉化為ASCII,並且把所有數位相加得到和,通過乘除法將金鑰的範圍控制在10-100之間。
再處理資料,講資料分為4組,不足位數用00補齊。分組之後再進行交叉分組。得到第二次分組的結果。對結果一利用金鑰進行處理,得到資料一。再將結果一之和進行金鑰處理,得到金鑰二。
再對結果二利用金鑰二進行處理,得到資料二。
拼接資料一和二,得到加密資料。
解密就是逆向操作了。
到此這篇關於用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