python實(shí)現(xiàn)凱撒密碼加密解密的示例代碼
凱撒加密就是通過將字母移動(dòng)一定的位數(shù)來實(shí)現(xiàn)加密和解密。明文中的所有字母都在字母表上向后(或向前)按照一個(gè)固定數(shù)目進(jìn)行偏移,被替換成密文。例如,當(dāng)偏移量是2的時(shí)候,所有的字母B將被替換成D,C變成E,以此類推Y將變成A,Z變成B。由此可見,偏移量就是凱撒密碼加密和解密的密鑰。
下面使用python代碼來實(shí)現(xiàn)凱瑟密碼的加密解密。
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]#建立循環(huán)字母 ? ? table=''.maketrans(before,after)#創(chuàng)建映射表 ? ? 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("請(qǐng)輸入要加密的字符串:") ? ? k=int(input("請(qǐng)輸入一個(gè)整數(shù)密鑰:"))#將k轉(zhuǎn)換為整數(shù),默認(rèn)輸入為字符 ? ? print('需要加密的字符串為:',s) ? ? a=kaisa_jiami(s,k) ? ? ? print("加密后為:",a) ? ? ? b= kaisa_jiemi(a,k) ? ? print("解密后為:",b) if __name__=='__main__': ? ? main()
運(yùn)行結(jié)果
請(qǐng)輸入要加密的字符串:HELLO world
請(qǐng)輸入一個(gè)整數(shù)密鑰:3
需要加密的字符串為: HELLO world
加密后為: KHOOR zruog
解密后為: HELLO world
上述程序中主要用到了maketrans()和translate()兩個(gè)方法。下面讓我們來詳細(xì)看一下這兩個(gè)方法的使用方法。
translate() 方法根據(jù) maketrans() 方法給出的字符映射轉(zhuǎn)換表轉(zhuǎn)換字符串中的字符。
比如
import string map = ''.maketrans('ABC123', 'abcDEF')#形成一個(gè)映射,將ABC123分別映射為abcDEF s = "123ABC" s.translate(map)#按照map中的映射關(guān)系進(jìn)行字符的替換。
運(yùn)行結(jié)果
'DEFabc'
到此這篇關(guān)于python實(shí)現(xiàn)凱撒密碼加密解密的示例代碼的文章就介紹到這了,更多相關(guān)python 凱撒密碼內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python list轉(zhuǎn)矩陣的實(shí)例講解
今天小編就為大家分享一篇python list轉(zhuǎn)矩陣的實(shí)例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-08-08django實(shí)現(xiàn)支付寶支付實(shí)例講解
在本篇文章里小編給大家整理的是一篇關(guān)于django支付寶支付的代碼實(shí)例內(nèi)容,需要的朋友們可以學(xué)習(xí)下。2019-10-10使用python實(shí)現(xiàn)兩數(shù)之和的畫解算法
這篇文章主要介紹了使用python實(shí)現(xiàn)兩數(shù)之和的畫解算法,采用實(shí)例問題的描述來進(jìn)行問題分析,并給出用暴力求解和哈希表兩種方法解決方案,有需要的朋友可以參考下2021-08-08python3?chromedrivers簽到的簡(jiǎn)單實(shí)現(xiàn)
本文主要介紹了python3?chromedrivers簽到的簡(jiǎn)單實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-03-03python實(shí)現(xiàn)mask矩陣示例(根據(jù)列表所給元素)
這篇文章主要介紹了python實(shí)現(xiàn)mask矩陣示例(根據(jù)列表所給元素),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07Pytorch可視化(顯示圖片)及格式轉(zhuǎn)換問題
這篇文章主要介紹了Pytorch可視化(顯示圖片)及格式轉(zhuǎn)換問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-12-12淺談python中的__init__、__new__和__call__方法
這篇文章主要給大家介紹了關(guān)于python中__init__、__new__和__call__方法的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考學(xué)習(xí),下面來跟著小編一起看看吧。2017-07-07