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

Python字符映射實現凱撒加密

2021-07-01 09:26:26牟曉東
電腦報 2021年8期
關鍵詞:方法

牟曉東

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

1.字符映射加密的簡單應用舉例

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

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

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

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

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

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

3.字符映射實現凱撒加密

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

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

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

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

4.凱撒加密的解密方法

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

猜你喜歡
方法
中醫特有的急救方法
中老年保健(2021年9期)2021-08-24 03:52:04
高中數學教學改革的方法
河北畫報(2021年2期)2021-05-25 02:07:46
化學反應多變幻 “虛擬”方法幫大忙
變快的方法
兒童繪本(2020年5期)2020-04-07 17:46:30
學習方法
用對方法才能瘦
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
賺錢方法
捕魚
主站蜘蛛池模板: 久久午夜夜伦鲁鲁片无码免费| 久久国产精品娇妻素人| 五月婷婷导航| jizz在线观看| 国产高潮流白浆视频| 天堂岛国av无码免费无禁网站| 日本www在线视频| 亚洲永久免费网站| 免费看一级毛片波多结衣| 国产91蝌蚪窝| 精品国产成人av免费| 重口调教一区二区视频| 亚洲精品无码av中文字幕| 伊伊人成亚洲综合人网7777| 在线免费观看AV| 中文精品久久久久国产网址| 激情综合婷婷丁香五月尤物 | 99热最新网址| 国产精品久久久精品三级| 亚洲精品国产首次亮相| 久久综合九色综合97婷婷| 亚洲精品男人天堂| 亚洲一区二区三区麻豆| 国产特一级毛片| 国产99视频免费精品是看6| 国产性生交xxxxx免费| 中文字幕色站| 日韩大乳视频中文字幕| 色偷偷一区| 国产一级做美女做受视频| 国产乱码精品一区二区三区中文 | 日韩少妇激情一区二区| 无码日韩精品91超碰| 欧美一级高清视频在线播放| 精品一区二区三区视频免费观看| 性欧美在线| 亚洲另类国产欧美一区二区| 日韩欧美成人高清在线观看| 色婷婷色丁香| 巨熟乳波霸若妻中文观看免费| 99爱在线| 草草影院国产第一页| 亚洲精品福利视频| 精品国产成人av免费| 好吊妞欧美视频免费| 91免费国产高清观看| 99精品国产自在现线观看| 91精品国产自产91精品资源| 99re这里只有国产中文精品国产精品 | 成年午夜精品久久精品| 国产精品自在拍首页视频8| 国产亚洲精品91| 国产一区成人| 亚洲AⅤ无码日韩AV无码网站| 国产在线第二页| 欧美一级一级做性视频| 久热精品免费| 欧美区一区二区三| 久久综合亚洲鲁鲁九月天| av免费在线观看美女叉开腿| 97国内精品久久久久不卡| 人人澡人人爽欧美一区| 欧美激情综合| 精品国产99久久| 无码中文AⅤ在线观看| 人人看人人鲁狠狠高清| 国产精品毛片一区| 国产精品伦视频观看免费| 亚洲综合久久成人AV| 最新无码专区超级碰碰碰| 美女潮喷出白浆在线观看视频| 大香伊人久久| 国产精品视频免费网站| 亚洲一级毛片在线播放| 暴力调教一区二区三区| 中文字幕日韩久久综合影院| 亚洲成人网在线播放| 日韩a级毛片| 在线国产资源| 999精品在线视频| 国产午夜在线观看视频| 中文字幕人成人乱码亚洲电影|