网络编程
位置:首页>> 网络编程>> Python编程>> Python实现密钥密码(加解密)实例详解

Python实现密钥密码(加解密)实例详解

作者:SFS_Ccjm  发布时间:2022-09-10 12:03:37 

标签:python,密钥,密码,加解密

密钥密码

Python实现密钥密码(加解密)实例详解


'''
如密钥短语密码为: university -> universty
明文: abcdefghijklmnopqrstuvwxyz
密文:jklmopqwxzuniverstyabcdfgh
'''

构造映射字典


# 构造映射 asc ---> crypt
def dic(x):
 list_x =[]
 list_z = []
 for i in x:
   list_x.append(ord(i))
 for i in range(97,123):
   if i not in list_x:
     list_x.append(i)
 list_ = list_x[26-len(x)-1:]
 cr = list_+list_x[:26-len(list_)]
 for i in range(97,123):
   list_z.append(i)
 return dict(map(lambda x,y:[x,y],list_z,cr))

# 构造映射 crypt ---> asc
def dic_2(x):
 list_x =[]
 list_z = []
 for i in x:
   list_x.append(ord(i))
 for i in range(97,123):
   if i not in list_x:
     list_x.append(i)
 list_ = list_x[26-len(x)-1:]
 cr = list_+list_x[:26-len(list_)]
 for i in range(97,123):
   list_z.append(i)
 return dict(map(lambda x,y:[x,y],cr,list_z))

密钥去重


# 密钥去重
def remove(x):
 unique_x = []
 for i in x:
   if i not in unique_x:
     unique_x.append(i)
 return unique_x

加解密


# 加密
def encode():
 x = input('请输入密钥字符:')
 if not x.isalpha():
   print('请输入正确的密钥格式!')
   exit(0)
 s = input('请输入明文:')
 print('加密后字符:',end='')
 unique_x = remove(x)
 dic_ = dic(unique_x)
 for i in s:
   if i.isspace():
     print(' ', end='')
   else:
     print(chr(dic_[ord(i)]),end='')

# 解密
def decode():
 x = input('请输入密钥字符:')
 if not x.isalpha():
   print('请输入正确的密钥格式!')
   exit(0)
 s = input('请输入密文:')
 print('解密后字符:',end='')
 unique_x = remove(x)
 dic_ = dic_2(unique_x)
 for i in s:
   if i.isspace():
     print(' ',end='')
   else:
     print(chr(dic_[ord(i)]),end='')

程序入口


# 输入指令
answer = input(f'请输入所需的操作:编码/E or 解码/D: ')
try:
 if answer.upper() == 'E':
   encode()
 elif answer.upper() == 'D':
   decode()
 else:
   print('输入错误!')
except KeyError:
 print('请正确输入小写字母!')

实现效果

注:可以输入空格
输出大小写:请自行修改

请输入所需的操作:编码/E or 解码/D:  e
请输入密钥字符:university
请输入明文:abcdefghijklmnopqrstuvwxyz
加密后字符:jklmopqwxzuniverstyabcdfgh

请输入所需的操作:编码/E or 解码/D:  d
请输入密钥字符:university
请输入密文:jklmopqwxzuniverstyabcdfgh
解密后字符:abcdefghijklmnopqrstuvwxyz

来源:https://blog.csdn.net/SFS_Ccjm/article/details/105728615

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com