1. 程式人生 > 程式設計 >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,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='')

程式入口

# 輸入指令
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

到此這篇關於Python實現金鑰密碼(加解密)的文章就介紹到這了,更多相關python 金鑰密碼內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!