利用Python产生加密表和解密表的实现方法

  


  

  

这是我第一次写博客,有不足之处,希望大家指出,谢谢!

  

这次的题目一共有三个难度,分别是简单,中等偏下,中等。对于一些刚刚入门的小伙伴来说,比较友好。废话不多说,直接进入正题。

  

<强>
  

  


  

  

【题目要求:
  实现以《三国演义》为密码本,对输入的中文文本进行加密和解密。至于加密方式,最简单的从0开始,一直往后,有多个字,就最多到多少。

  

【分析】:

  

1。知识背景:需要用到文件的读写操作,以及字典和集合的相关知识只

  

, 2思路:现将文件读取进来,然后对文字进行依次编码,存入字典中。

  

【代码】:

        # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -简单难度- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   def Load_file_easy(路径):   #[注]返回值是一个集,不可进行数字索引   文件=打开(路径、“r”编码=' use utf8 ')   Str=以()   Str=集(Str)   file.close ()   返回Str   def Encode_easy (Lstr):   Sstr=列表(设置(Lstr))   Encode_Dict={}   因为我在范围(len (Lstr)):   Encode_Dict [Sstr[我]]=我   返回Encode_Dict   def Decode_easy (Encode_dict):   List1=Encode_dict.keys ()   用于=Encode_dict.values ()   Decode_Dict=dict(列表(zip(用于List1)))   返回Decode_Dict      路径=' SanGuo.txt '   Str=列表(Load_file_easy(路径))   Encode_dict=Encode_easy (Str)   Decode_dict=Decode_easy (Encode_dict)   #写入同级目录下的文件中,如果不存在文件,则会新创建   #(博主的运行环境是:Ubuntu,赢得系统的小伙伴可能会在文件末尾加上。txt啥的,略略略)   张开(' easy_degree_Encode_dict ', ' w ')文件:   file.write (str (Encode_dict))   张开(' easy_degree_Decode_dict ', ' w ')文件:   file.write (str (Decode_dict))   之前      


  

  

【题目要求:

  

对《三国演义》的电子文档进行页的划分,以400个字为1页,每20页行20列,那么建立每个字对应的八位密码表示,其中前1 ~ 4位为页码,5、6位为行号,7号,8位为这一行的第几列,例如:实:24131209,表示字“实”出现在第2413页的12行的09年列只,利用此方法对中文文本进行加密和解密。

  

【分析】

  

和简单难度相比,就是加密的方式产生了不同,所以简单难度的框架可以保留只
  加密方式:首先要知道这个电子文档有多少页,可以len (Str)//400,就得到了多少页(我觉得多一页少一页没啥影响就没有+ 1了),然后就是要对每一个字能正确的得到它的行号和列号,具体方法见代码。
  

  

【代码】:

        def Load_file_middle(路径):   张开(路径、“r”编码=' use utf8)文件:   Str=以()   返回Str      def编码(Str):   Encode_dict={}   #得到页数   因为我在范围(len (Str)//400):=我+ 1页   temp=Str[(我* 400):(400 * (i + 1)))   page_str=str(页面)   page_str=page_str.zfill (4)   行#得到行号和列号   范围的j (400):   坳=str (j)   坳=col.zfill (2)   #这里稍微说一下:比如02是第三列,12是第13列,112是第13列,看看规律就可以了   如果int (col [2]) % 2==0:   坳=int (col [1]) + 1   其他:   坳=int (col [1]) + 11   行=str (j//20 + 1)   行=row.zfill (2)   坳=(str (col)) .zfill (2)   #打印(page_str、行坳)   Encode_dict[临时[j]]=page_str +行+ str (col)   返回Encode_dict            def解码(Encode_dict):   List1=Encode_dict.keys ()   用于=Encode_dict.values ()   Decode_Dict=dict(列表(zip(用于List1)))   返回Decode_Dict            路径=' SanGuo.txt '   Str=列表(Load_file_middle(路径))   Encode_dict=编码(Str)   Decode_dict=解码(Encode_dict)   张开(' middle_low_degree_Encode_dict ', ' w ')文件:   file.write (str (Encode_dict))   张开(' middle_low_degree_Decode_dict ', ' w ')文件:   file.write (str (Decode_dict)      


  

  

【题目要求:现监听到敌方加密后的密文100篇,但是不知道敌方的加密表,但是知道该密码表是由用一个英文字母代替另一个英文字母的方式实现的,现请尝试破译该密码。(注意:只针对英文)

  

【分析】:

  

知识背景:需要爬虫的相关知识

利用Python产生加密表和解密表的实现方法