999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

Python字符映射實(shí)現(xiàn)凱撒加密

2021-07-01 09:26:26牟曉東
電腦報(bào) 2021年8期
關(guān)鍵詞:方法

牟曉東

Python提供了比較豐富的字符串常用方法,其中的maketrance()和translate()是一對專門用來生成字符映射表和根據(jù)映射表進(jìn)行字符轉(zhuǎn)換的方法,可以同時(shí)處理多個(gè)不同的字符,經(jīng)常應(yīng)用于字符串的加密和解密。

1.字符映射加密的簡單應(yīng)用舉例

maketrance()方法一般用于創(chuàng)建字符映射的轉(zhuǎn)換表,兩個(gè)參數(shù)為長度一致的字符串,作用是將前面字符串中的字符轉(zhuǎn)換成后面字符串中的對應(yīng)字符;而translate()方法則是配合maketrance()方法實(shí)現(xiàn)字符串內(nèi)容的替換。在此編寫一個(gè)簡單的英文加密小程序。

首先建立變量table并賦值為“‘.maketrans(‘a(chǎn)bcdefg,‘nmlkjih)”,作用是利用建立maketrance()方法來建立字符映射表,把第一個(gè)參數(shù)“abcdefg”中的各個(gè)字符依次替換為“nmlkjih”中的各個(gè)字符,即a映射為n、b映射為m、c映射為l……接著建立變量s,其值為使用input獲取用戶從鍵盤輸入的一句英文;然后建立變量miwen,其值為“s.translate(table)”,根據(jù)之前使用maketrance()方法創(chuàng)建的table映射表完成對應(yīng)字符的一一映射;最后,使用print語句輸出變量miwen,即“加密后的密文”。

運(yùn)行程序,按照提示輸入經(jīng)典測試句:“The quick brown fox jumps over a lazy dog.”(這句話包含全部字母),得到加密后的密文結(jié)果:“Thj quilk mrown iox jumps ovjr n lnzy koh.”(如圖1)。原句中的“abcdefg”七個(gè)字母都被分別替換為“nmlkjih”,實(shí)現(xiàn)了加密。

2.字符映射的“非完全”解密法

既然利用maketrance()方法的加密是將兩個(gè)字符串進(jìn)行映射替換,那么理論上可以將兩個(gè)字符串位置互換來實(shí)現(xiàn)解密。即table變量的值變成“‘.maketrans(‘nmlkjih,‘a(chǎn)bcdefg)”,其他的內(nèi)容基本不變,只修改一下對應(yīng)的提示信息。在“請輸入待解密的一句英文:”提示后面輸入剛剛得到的加密句子:“Thj quilk mrown iox jumps ovjr n lnzy koh.”,回車后得到解密后的原文是:“Tge qufcd browa fox eubps over a cazy dog.”,并未還原最初的經(jīng)典測試句子(如圖2)。那么究竟錯(cuò)出在哪兒呢?

那是因?yàn)闊o論是加密還是解密時(shí),使用maketrance()方法建立的字符映射表并不全面,沒有將所有的大小寫英文字母都進(jìn)行映射,只是建立了7個(gè)字母之間的相互映射(即加密與解密)。解密時(shí),程序會機(jī)械地將密文中的所有“nmlkjih”這七個(gè)字母還原為“abcdefg”,但密文中有些“nmlkjih”最初并不是由“abcdefg”加密而來的。想要實(shí)現(xiàn)真正的解密,必須在加密時(shí)對所有的大小寫英文字母進(jìn)行逐一不重復(fù)的映射替換,其實(shí)凱撒加密就是一種通過字母移位的方式來加密信息的方法。

3.字符映射實(shí)現(xiàn)凱撒加密

首先使用“import string”語句導(dǎo)入string庫,接著使用變量s來接收用戶從鍵盤輸入的待加密的英文。變量n是用來接收凱撒加密的移位要求,因?yàn)橛?6個(gè)英文字母,所以加密的有效移位數(shù)字共有25個(gè)(1-25);特別注意input語句接收的是字符串型數(shù)據(jù),必須通過int來轉(zhuǎn)換為整數(shù)。

然后建立lower和upper兩個(gè)變量,其值分別為26個(gè)英文小寫字母(string.ascii_lowercase)和大寫字母(string.ascii_uppercase),這是string庫所提供的常量;同樣,變量before的值為“string.ascii_letters”,也是string庫中已經(jīng)定義好的常量值,意思是所有的大小寫英文字母。變量after則是利用了Python的“切片”操作,其中的“l(fā)ower[n:] + lower[:n]”是完成英文小寫字母的循環(huán)移位,而“upper[n:] + upper[:n]”則是大寫字母的循環(huán)移位,移位的步長即用戶之前從鍵盤上輸入的數(shù)值n。

建立變量table,其值為“‘.maketrans(before,after)”,即包括所有大小寫在內(nèi)的英文字母完整映射表。最后,通過print語句輸出凱撒加密后的密文信息“s.translate(table)”。

運(yùn)行程序,按照提示仍然輸入那句經(jīng)典測試句子。回車后,提示輸入加密的移位數(shù)字,輸入“6”,得到了加密后的密文“Znk waoiq hxuct lud pasvy ubkx g rgfe jum.”(如圖3)。

4.凱撒加密的解密方法

由于程序中已經(jīng)包括了所有的英文大小寫字母,因此簡單地修改table變量的值即可實(shí)現(xiàn)凱撒密碼的解密,也就是將maketrance()方法的before和after兩個(gè)參數(shù)進(jìn)行位置互換即可。運(yùn)行解密程序,輸入剛剛加密后的結(jié)果,收到“解密的移位數(shù)字”,此時(shí)必須要輸入之前加密時(shí)的移位數(shù)字“6”,才能得到正確的原文信息。如果輸入其他的數(shù)字,比如“11”,就無法正確還原出之前未加密的原文,得到的是“Ocz lpdxf wmjri ajs ephkn jqzm v gvut yjb.”。

猜你喜歡
方法
中醫(yī)特有的急救方法
中老年保健(2021年9期)2021-08-24 03:52:04
高中數(shù)學(xué)教學(xué)改革的方法
化學(xué)反應(yīng)多變幻 “虛擬”方法幫大忙
變快的方法
兒童繪本(2020年5期)2020-04-07 17:46:30
學(xué)習(xí)方法
用對方法才能瘦
Coco薇(2016年2期)2016-03-22 02:42:52
最有效的簡單方法
山東青年(2016年1期)2016-02-28 14:25:23
四大方法 教你不再“坐以待病”!
Coco薇(2015年1期)2015-08-13 02:47:34
賺錢方法
捕魚
主站蜘蛛池模板: 九色视频在线免费观看| 亚洲欧美日韩高清综合678| 看国产毛片| 亚洲a级毛片| 国产精品第一区在线观看| 在线精品视频成人网| 欧美天堂在线| 亚洲欧美在线精品一区二区| 免费看黄片一区二区三区| 一边摸一边做爽的视频17国产| AV不卡无码免费一区二区三区| 欧美成人午夜影院| 2021国产v亚洲v天堂无码| 亚洲 日韩 激情 无码 中出| 亚洲人成网站18禁动漫无码| 国禁国产you女视频网站| 成人年鲁鲁在线观看视频| 欧美日本激情| 国产女人18毛片水真多1| 久久精品一品道久久精品| 狠狠色丁婷婷综合久久| 四虎成人精品在永久免费| 一级全黄毛片| 丝袜无码一区二区三区| 国产精品一区二区在线播放| 国产女人喷水视频| 中文字幕佐山爱一区二区免费| 国产亚洲精品在天天在线麻豆| 亚洲男女天堂| 亚洲无限乱码一二三四区| 91在线丝袜| 国产新AV天堂| 久久久久人妻一区精品色奶水 | AV熟女乱| 狠狠色综合久久狠狠色综合| 爱做久久久久久| 久久免费视频6| 69av免费视频| 亚洲综合一区国产精品| 国产精欧美一区二区三区| 日韩免费毛片视频| 国产毛片基地| 久久99蜜桃精品久久久久小说| 国产偷倩视频| 国产欧美精品一区二区| 漂亮人妻被中出中文字幕久久| 日韩精品一区二区三区免费| 在线观看亚洲人成网站| 免费在线看黄网址| 精品综合久久久久久97超人| 五月激情综合网| 中日韩欧亚无码视频| 久久99国产综合精品1| 国产成人精品一区二区不卡| 一级毛片a女人刺激视频免费| 99青青青精品视频在线| 丁香六月激情综合| 亚洲av综合网| 无码日韩人妻精品久久蜜桃| 又大又硬又爽免费视频| 日韩精品一区二区三区视频免费看| 久久黄色视频影| 免费人欧美成又黄又爽的视频| 97在线碰| 国产自在线拍| 大香伊人久久| 成人午夜免费观看| 永久免费无码日韩视频| 欧美黄网在线| 制服丝袜无码每日更新| 欧美69视频在线| 亚洲视频三级| 国产真实二区一区在线亚洲| 尤物特级无码毛片免费| 色AV色 综合网站| 久久久精品久久久久三级| 亚洲第一网站男人都懂| 91在线视频福利| 国产成人精品18| 亚洲爱婷婷色69堂| 亚洲欧美日韩中文字幕一区二区三区 | 亚洲无码免费黄色网址|