久久福利_99r_国产日韩在线视频_直接看av的网站_中文欧美日韩_久久一

您的位置:首頁技術(shù)文章
文章詳情頁

Python加密word文檔詳解

瀏覽:4日期:2022-08-06 15:08:30
目錄Python加密word文檔總結(jié)Python加密word文檔

我們先了解一下異或是什么。簡單來說,如果a、b兩個值不相同,則異或結(jié)果為1。如果a、b兩個值相同,異或結(jié)果為0。我們簡單的梳理一下代碼思路。代碼分為兩部分,加密和解密。

1.加密

把文件轉(zhuǎn)換成二進(jìn)制的格式,然后生成等長的隨機(jī)密鑰進(jìn)行異或操作,得到加密后的二進(jìn)制文件。這一步我們需要保留的數(shù)據(jù)有,加密后的文件和隨機(jī)生成的密鑰,當(dāng)然他們都是一些二進(jìn)制數(shù)。

2.解密

這一步就簡單了,我們把加密后的文件和之前隨機(jī)生成的密鑰再進(jìn)行一次異或操作,即可得到原本的二進(jìn)制數(shù),然后我們再把它轉(zhuǎn)換成文本即可。

OK,思路大致明了了,我們需要兩個程序,加密程序接收str參數(shù) ,運(yùn)行完成會輸出加密后的二進(jìn)制word文檔,和用于解密的二進(jìn)制密鑰。解密程序則需要接收兩個int參數(shù),分別為加密程序輸出的兩個二進(jìn)制內(nèi)容,異或之后輸出原始文本。那么,上代碼。

加密代碼:

from secrets import token_bytesfrom docx import Documentimport docximport time​def random_key(length): # token_bytes,函數(shù)接受一個int參數(shù),用于指定隨機(jī)字節(jié)串的長度。 # int.from_bytes把字節(jié)串轉(zhuǎn)換為int,也就是我們需要的二進(jìn)制數(shù) key = token_bytes(nbytes=length) key_int = int.from_bytes(key, ’big’) return key_int​def encrypt(raw): raw_bytes = raw.encode() #參數(shù)big意為正序,little則輸出反序。 raw_int = int.from_bytes(raw_bytes, ’big’) key_int = random_key(len(raw_bytes)) return raw_int ^ key_int, key_int​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()​def encrypt_file(path, key_path=None,): document = Document(path) all_paragraphs = document.paragraphs file = docx.Document() file2 = docx.Document()​ jkl = input(’請輸入希望保存的文件名:’) + ’.docx’​ for paragraph in all_paragraphs:# 打印每一個段落的文字zz,key = encrypt(paragraph.text)​#print(’加密:’,zz)#print(’key:’, key)​file.add_paragraph(str(zz))file.save(jkl)​file2.add_paragraph(str(key))file2.save('key.docx')​print(’滑稽研究所出品!’)print(’僅支持英文文件名。’)chenggong = encrypt_file(input(’請輸入需要加密的文件名:’))print('已完成!十秒后自動關(guān)閉')time.sleep(10)#生成加密文件

通過 encode 方法,將字符串編碼成字節(jié)串。int.from_bytes 函數(shù)將字節(jié)串轉(zhuǎn)換為 int 對象。最后對二進(jìn)制對象和隨機(jī)密鑰進(jìn)行異或操作,就得到了加密文本。

解密代碼:

from secrets import token_bytesfrom docx import Documentimport docximport time​def random_key(length): # token_bytes,函數(shù)接受一個int參數(shù),用于指定隨機(jī)字節(jié)串的長度。 # int.from_bytes把字節(jié)串轉(zhuǎn)換為int,也就是我們需要的二進(jìn)制數(shù) key = token_bytes(nbytes=length) key_int = int.from_bytes(key, ’big’) return key_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​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()​jjj = []kkk = []​def decrypt_file(path_encrypted, key_path=None, *, encoding=’utf-8’): document = Document(path_encrypted) all_paragraphs = document.paragraphs​ do2 = Document(’key.docx’) all_p= do2.paragraphs​ for i in all_paragraphs:#str轉(zhuǎn)intjiam = int(i.text)jjj.append(jiam)​#print(’加密:’,jiam) #print(jjj)​ for k in all_p:#str轉(zhuǎn)intkey = int(k.text)kkk.append(key)​#print(’key:’,key) #print(kkk)​ cc = zip(jjj,kkk) res = list(cc) return res#傳入元組,或兩個int。print(’滑稽研究所出品!’)print(’警告,嚴(yán)禁修改密鑰文件名?。。 ?print(’直接輸入文件名,無需格式后綴?!?rr1 = decrypt_file(input('請輸入需要破解文件的文件名(僅限.docx文件):')+’.docx’)​file = docx.Document()for i in rr1: ff = decrypt(*i) #print(ff) #print(type(ff)) file.add_paragraph(ff)file.save('res.docx')print(’解密完成,請在當(dāng)前文件夾下提取文件!’)print(’十秒后自動關(guān)閉!’)time.sleep(10)

我們需要將兩個程序打包成exe。運(yùn)行加密程序得到的二進(jìn)制word文檔,可以給其他人,但密鑰必須自己保存。當(dāng)別人滿足你的要求之后,我們可以把密鑰和解密程序給他。注意,只對docx文件有效,且不可以修改密鑰文件的名稱,不然會報錯,解密失敗。

運(yùn)行結(jié)果:

原始word文件。

Python加密word文檔詳解

加密后:

Python加密word文檔詳解

生成的key密鑰:

Python加密word文檔詳解

加密后的文件和生成的密鑰,放在解密程序文件夾下之后,會得到如下。我們得到了原文件,美中不足的是所有的首行縮進(jìn)都消失了,變成了左對齊。

Python加密word文檔詳解

同樣的文件,重新加密之后,會得到不同的加密文件和密鑰。因此如果加密文件和密鑰不匹配,即使他們的源文件是一樣的,也是無法解密的。此外密鑰丟失,加密的文件將永遠(yuǎn)不能解密。

總結(jié)

本篇文章就到這里了,希望能給你帶來幫助,也希望您能夠多多關(guān)注好吧啦網(wǎng)的更多內(nèi)容!

標(biāo)簽: python
相關(guān)文章:
主站蜘蛛池模板: 男人天堂a | 91久久久久久久久久久久久久 | 人人干天天干 | 成年人免费看 | 日本成人福利视频 | 色婷婷激情 | 日日摸夜夜添夜夜添高潮视频 | 日本高清视频一区二区三区 | 亚洲国产二区 | 香蕉视频黄色 | 亚洲精品久久久久久下一站 | 50人群体交乱视频 | 最新日韩欧美 | 欧美一级在线 | 日韩精品视频在线观看一区二区 | 干干日日 | 嫩草影院永久入口 | 成人免费一区 | 精品在线播放 | 亚洲一区二区视频在线观看 | 在线精品亚洲欧美日韩国产 | 日本妇人成熟免费视频 | 91精品综合久久久久久五月天 | 成人在线精品 | 在线免费观看羞羞视频 | 久久精品国产视频 | 国产伦精品久久久一区二区三区 | 国产成人午夜 | 一区二区在线影院 | 蜜月久综合久久综合国产 | 偷拍电影一区二区三区 | 精品视频在线观看一区二区三区 | 国产精品自产拍在线观看桃花 | 精品成人一区 | 国产日韩欧美91 | 亚洲国产一区视频 | 欧美日韩在线播放 | 欧美亚洲国产一区二区三区 | 黄网在线观看 | 国产日韩一区二区三区 | 亚洲91在线 |