溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python如何實現凱撒密碼

發布時間:2021-04-16 10:33:13 來源:億速云 閱讀:661 作者:小新 欄目:開發技術

小編給大家分享一下python如何實現凱撒密碼,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!

在密碼學中,凱撒密碼(或稱愷撒加密、愷撒變換、變換加密)是一種最簡單且最廣為人知的加密技術。它是一種替換加密的技術。這個加密方法是以愷撒的名字命名的,當年愷撒曾用此方法與其將軍們進行聯系。愷撒密碼通常被作為其他更復雜的加密方法中的一個步驟,例如維吉尼亞密碼。愷撒密碼還在現代的ROT13系統中被應用。但是和所有的利用字母表進行替換的加密技術一樣,愷撒密碼非常容易被破解,而且在實際應用中也無法保證通信安全。

盡管是最簡單的加密技術,但那該怎么在python中如何現實呢?

代碼如下:

def ask():
 while True:
  print("Welcome to you coming!")
  print("you can choose mode : encrypt(e) or decrypt(d)")  #有解密和加密模式
  print("If you choose encrypt ,you can lock the message!") #加密提示
  print("If you choose decrypt ,you can unlock the message!") #解密提示
  print("If you wanna exit , input 'q'!!")     #退出提示
  mode = input("choose:").lower()        #將輸入的模式進行變換(從大寫變小寫,小寫部分不變)
  if mode in 'encrypt e decrypt d q'.split():     #當模式是被要求的encrypt e(加密模式)decrypt d(解密模式) q(退出)時進行下一步操作
   #print(mode)           #打印輸入的模式
   return mode            #將mode的值作為返回值
  else:
   print('Please input right option!!')     #輸出提示


def getKey(mode):
 key = 0               #設置默認的key
 while key <= 0 or key >= 26:         #限制key的范圍在(1-25以內的數)
  try:              #這里進行異常處理,將非整數類型的輸入進行錯誤提示打印
   key = int(input("Please input your key:(1-26)"))
  except:
   print("Please input correct number!!")
 #對解密的密匙進行變換
 if mode == 'd' or mode == 'decrypt':
  key = -key
 return key

def getMessage(key):
 #輸入信息
 while True:
  informetion = input("Please input message!!")    #輸入要解密或者加密的信息
  if informetion.isalpha():         #判斷輸入的字符串是否為純字母
   break
  else:
   print("Please input continuous character!!!")   #輸錯提示
 message = ''             #設置輸出的初始值
 for x in informetion:           #將輸入信息里的進行逐一字母加密/解密
  num = ord(x)            #將單一字符通過ascii表進行轉換,將字母轉換為數字
  num += key             #加上key的值進行下列運算
  if x.isupper():            #判斷是否是大寫字母
   if num > ord('Z'):          #對超出ascii對應數值的范圍進行處理
    num -=26
    print(message)
   elif num < ord('A'):
    num +=26
    print(message)
  elif x.islower():           #判斷是否小寫字母
   if num > ord('z'):
    num -=26
   elif num < ord('a'):
    num +=26
  message += chr(num)           #將單一字符通過ascii表進行轉換,將數字轉換為字母
 return message             #返回message的值
  
if __name__=="__main__":           #主程序
 mode = ask()             #將ask()返回值存于mode變量中
 if mode == 'q':             #進行退出判斷
  print('welcome!!')
 else:
  key = getKey(mode)            #將mode變量的值帶入getKey函數中運行,運行后將key的值存入到key變量中
  last = getMessage(key)          #將key變量的值帶入到getMessage函數中,運行后將message的值存入到last變量中
  print(last)

看完了這篇文章,相信你對“python如何實現凱撒密碼”有了一定的了解,如果想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女