|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- import re
- zimu=['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z']
- juzhen=[]
- juzhen.append(zimu)
- # 写入26个空列表
- for i in range(26):
- juzhen.append([])
- # 递增写入字母
- n=0
- t=-1
- for i in juzhen:
- v=n
- t+=1
- if t!=0:
- for x in range(26):
- i.append(zimu[v])
- v+=1
- if v==26:
- v=0
- n+=1
- while True:
- print("------('1'加密模式,'0'解密模式)------")
- n=input("---请输入要选择的模式:")
- if n=="1":
- # 加密
- name=input("------请输入要加密的字符:")
- name_key=input("-----请输入进行加密的密钥:")
- name_key=name_key.upper()
- name=name.upper()
- print("------正在排列计算中......")
- # 打包列表
- name_list=[]
- for i in name:
- name_list.append(i)
- name_key_list=[]
- for i in name_key:
- name_key_list.append(i)
- name233_list=[]
- n=0
- print("---------------------------------------")
- K=1
- for i in name_list:
- A=re.search(r'[A-Z]',i)
- if A==None:
- name233_list.append(i)
- continue
- print("---第",K,"项:")
- print("---明文:",i)
- print("---密钥:",name_key_list[n])
- dex=juzhen[0].index(name_key_list[n])# 通过密钥内容在第一行找到X轴坐标
- print("---X轴:",dex)
- dey=0
- for j in juzhen:# 遍历寻找在X轴坐标含有加密内容的行
- if j[dex]==i:
- print("---Y轴:",dey)
- name233_list.append(juzhen[dey][0])
- break
- dey+=1# 行数计数器递增
- n+=1# 密钥计数器递增,如果超出密钥长度,则重头开始
- if n==len(name_key_list):
- n=0
- K+=1
- print("---------------------------------------")
- # 输出结果
- print("------------------------------------------加密结果--------------------------------------------")
- print("------明文是:",name)
- print("------密钥是:",name_key)
- print("------密文是:",end=" ")
- for i in name233_list:
- print(i,end="")
- s=26**len(name)
- print("\n该方法加密的穷举破解次数为:",s,"次")
- if len(name)>22:
- cc="相当于每秒亿亿次的计算机连续破解{:.1f}亿年!"
- s=s//(100000000*100000000)//60//60//24//30//12//100000000
- else:
- cc="相当于每秒一亿次的计算机连续破解{:.1f}年!"
- s=s//100000000//60//60//24//30//12
- print(cc.format(s))
- print("------------------------------------------------------------------------------------------------")
-
- elif n=="0":
- # 解密
- name=input("------请输入要解密的字符:")
- name_key=input("------请输入进行解密的密钥:")
- name_key=name_key.upper()
- name=name.upper()
- print("------正在排列计算中......")
- # 打包列表
- name_list=[]
- for i in name:
- name_list.append(i)
- name_key_list=[]
- for i in name_key:
- name_key_list.append(i)
- name233_list=[]
- n=0
- print("---------------------------------------")
- K=1
- for i in name_list:
- A=re.search(r'[A-Z]',i)
- if A==None:
- name233_list.append(i)
- continue
- print("---第",K,"项:")
- print("---密文:",i)
- print("---密钥:",name_key_list[n])
- dex=juzhen[0].index(name_key_list[n])
- print("---X轴:",dex)
- dey=1
- for j in juzhen[1:]:# 遍历寻找在每行第一列含有加密内容的行
- if j[0]==i:
- print("---Y轴:",dey)
- name233_list.append(juzhen[dey][dex])
- break
- dey+=1 # 行数计数器递增
- n+=1# 密钥计数器递增,如果超出密钥长度,则重头开始
- if n==len(name_key_list):
- n=0
- K+=1
- print("---------------------------------------")
- # 输出结果
- print("------------------------------------------解密结果--------------------------------------------")
- print("------密钥是:",name_key)
- print("------密文是:",name)
- print("------明文是:",end=" ")
- for i in name233_list:
- print(i,end="")
- print("\n------------------------------------------------------------------------------------------------")
复制代码 |
|