python實現凱撒密碼加密解密的示例代碼
凱撒加密就是通過將字母移動一定的位數來實現加密和解密。明文中的所有字母都在字母表上向後(或向前)按照一個固定數目進行偏移,被替換成密文。例如,當偏移量是2的時候,所有的字母B將被替換成D,C變成E,以此類推Y將變成A,Z變成B。由此可見,偏移量就是凱撒密碼加密和解密的密鑰。
下面使用python代碼來實現凱瑟密碼的加密解密。
import string def kaisa_jiami(s,k): lower=string.ascii_lowercase#小寫英文字母 upper=string.ascii_uppercase#大寫英文字母 before=string.ascii_letters#全部英文字母字母 after=lower[k:]+lower[:k]+upper[k:]+upper[:k]#建立循環字母 table=''.maketrans(before,after)#創建映射表 return s.translate(table) def kaisa_jiemi(s,k): lower=string.ascii_lowercase upper=string.ascii_uppercase before=string.ascii_letters after=lower[k:]+lower[:k]+upper[k:]+upper[:k] table=''.maketrans(after,before) return s.translate(table) def main(): s=input("請輸入要加密的字符串:") k=int(input("請輸入一個整數密鑰:"))#將k轉換為整數,默認輸入為字符 print('需要加密的字符串為:',s) a=kaisa_jiami(s,k) print("加密後為:",a) b= kaisa_jiemi(a,k) print("解密後為:",b) if __name__=='__main__': main()
運行結果
請輸入要加密的字符串:HELLO world
請輸入一個整數密鑰:3
需要加密的字符串為: HELLO world
加密後為: KHOOR zruog
解密後為: HELLO world
上述程序中主要用到瞭maketrans()和translate()兩個方法。下面讓我們來詳細看一下這兩個方法的使用方法。
translate() 方法根據 maketrans() 方法給出的字符映射轉換表轉換字符串中的字符。
比如
import string map = ''.maketrans('ABC123', 'abcDEF')#形成一個映射,將ABC123分別映射為abcDEF s = "123ABC" s.translate(map)#按照map中的映射關系進行字符的替換。
運行結果
'DEFabc'
到此這篇關於python實現凱撒密碼加密解密的示例代碼的文章就介紹到這瞭,更多相關python 凱撒密碼內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- 利用python判斷字母大小寫的幾種方法小結
- python如何正確的操作字符串
- Python如何將給定字符串中的大寫英文字母按以下對應規則替換
- Python中字符串對象語法分享
- Python入門基礎之數字字符串與列表