Python加密word文档

from secrets import token_bytes

from docx import Document

import docx

import time

def random_key(length):

     # token_bytes ,函数接受一个 int 参数,用于指定随机字节串的长度。

     # int.from_bytes 把字节串转换为 int ,外汇跟单gendan5.com也就是我们需要的二进制数

     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 int

         jiam = int(i.text)

         jjj.append(jiam)

         #print(' 加密: ',jiam)

     #print(jjj)

     for k in all_p:

         #str int

         key = int(k.text)

         kkk.append(key)

         #print('key:',key)

     #print(kkk)

     cc = zip(jjj,kkk)

     res = list(cc)

     return res

# 传入元组,或两个 int

print(' 滑稽研究所出品! ')

print(' 警告,严禁修改密钥文件名!!! ')

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(' 解密完成,请在当前文件夹下提取文件! ')

print(' 十秒后自动关闭! ')

time.sleep(10)


请使用浏览器的分享功能分享到微信等