Python怎么加密字文档

  介绍

这篇文章主要介绍”Python怎么加密字文档”,在日常操作中,相信很多人在Python怎么加密字文档问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答“Python怎么加密字文档”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

<编辑类="目录">目录 <李>

Python加密字文档


Python加密字文档

我们先了解一下异或是什么。简单来说,如果a, b两个值不相同,则异或结果为1。如果a, b两个值相同,异或结果为0。我们简单的梳理一下代码思路。代码分为两部分,加密和解密。

<强> 1。加密

把文件转换成二进制的格式,然后生成等长的随机密钥进行异或操作,得到加密后的二进制文件。这一步我们需要保留的数据有,加密后的文件和随机生成的密钥,当然他们都是一些二进制数。

<强> 2。解密

这一步就简单了,我们把加密后的文件和之前随机生成的密钥再进行一次异或操作,即可得到原本的二进制数,然后我们再把它转换成文本即可。

好的,思路大致明了了,我们需要两个程序,加密程序接收str参数,运行完成会输出加密后的二进制词文档,和用于解密的二进制密钥。解密程序则需要接收两个int参数,分别为加密程序输出的两个二进制内容,异或之后输出原始文本。那么,上代码。

<强>加密代码:

得到secrets  import  token_bytes   得到docx  import 文档   多克斯import    import 时间      def  random_key(长度):   ,,,#,token_bytes,函数接受一个int参数,用于指定随机字节串的长度。   ,,,#,int.from_bytes把字节串转换为int,也就是我们需要的二进制数   ,,,key =, token_bytes (nbytes=长度)   ,,,key_int =, int.from_bytes(关键,& # 39;大# 39;)   ,,,return  key_int      def 加密(生):   ,,,raw_bytes =, raw.encode ()   ,,,#参数大意为正序,小则输出反序。   ,,,raw_int =, int.from_bytes (raw_bytes, & # 39;大# 39;)   ,,,key_int =, random_key (len (raw_bytes))   ,,,return  raw_int  ^, key_int, key_int      def 解密(加密,key_int):   ,,,decrypted =, encrypted  ^ key_int   ,,,length =, (decrypted.bit_length (), +, 7),//8   ,,,decrypted_bytes =, int.to_bytes(解密、,长度,& # 39;大# 39;)   ,,,return  decrypted_bytes.decode ()      def  encrypt_file(路径,key_path=None,):   ,,,document =,文档(路径)   ,,,all_paragraphs =document.paragraphs   ,,,file =, docx.Document ()   ,,,file2 =, docx.Document ()      ,,,jkl =,输入(& # 39;请输入希望保存的文件名:& # 39;),+,& # 39;。docx # 39;      ,,,for  paragraph 拷贝all_paragraphs:   ,,,,,,,#,打印每一个段落的文字   ,,,,,,,老公,key =,加密(paragraph.text)      ,,,,,,,#打印(& # 39;加密:& # 39;,zz)   ,,,,,,,#打印(& # 39;关键:& # 39;,,键)      ,,,,,,,file.add_paragraph (str (zz))   ,,,,,,,file.save (. jkl)      ,,,,,,,file2.add_paragraph (str(关键))   ,,,,,,,file2.save (“key.docx")      打印(& # 39;滑稽研究所出品! & # 39;)   打印(& # 39;仅支持英文文件名# 39;公司)   时间=chenggong  encrypt_file(输入(& # 39;请输入需要加密的文件名:& # 39;))   print(“已完成!十秒后自动关闭“)   time . sleep (10)   #生成加密文件

通过编码的方法,将字符串编码成字节串.int.from_bytes函数将字节串转换为int对象。最后对二进制对象和随机密钥进行异或操作,就得到了加密文本。

<>强解密代码:

得到secrets  import  token_bytes   得到docx  import 文档   多克斯import    import 时间      def  random_key(长度):   ,,,#,token_bytes,函数接受一个int参数,用于指定随机字节串的长度。   ,,,#,int.from_bytes把字节串转换为int,也就是我们需要的二进制数   ,,,key =, token_bytes (nbytes=长度)   ,,,key_int =, int.from_bytes(关键,& # 39;大# 39;)   ,,,return  key_int      def 加密(生):   ,,,raw_bytes =, raw.encode ()   ,,,raw_int =, int.from_bytes (raw_bytes, & # 39;大# 39;)   ,,,key_int =, random_key (len (raw_bytes))   ,,,return  raw_int  ^, key_int, key_int      def 解密(加密,key_int):   ,,,decrypted =, encrypted  ^ key_int   ,,,length =, (decrypted.bit_length (), +, 7),//8   ,,,decrypted_bytes =, int.to_bytes(解密、,长度,& # 39;大# 39;)   ,,,return  decrypted_bytes.decode ()      时间=jjj  []   时间=kkk  []      def  decrypt_file (path_encrypted, key_path=没有,,,,=& # 39;编码utf - 8 # 39;):   ,,,document =,文档(path_encrypted)   ,,,all_paragraphs =document.paragraphs      ,,,do2 =,文档(& # 39;key.docx& # 39;)   ,,,all_p=do2.paragraphs      null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

Python怎么加密字文档