国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

伏魔平天下——愷撒密碼

2018-07-12 05:09王麗麗
中國(guó)信息技術(shù)教育 2018年12期
關(guān)鍵詞:愷撒字符咒語(yǔ)

王麗麗

● 情境導(dǎo)入

贏了守護(hù)使這一關(guān),阿派終于進(jìn)入了那一方神秘世界。一路上,他披荊斬棘、伏魔降妖平天下,并獲得了勝利的獎(jiǎng)勵(lì)——魔法羊皮卷。展開(kāi)卷宗,只有一行看不懂的咒語(yǔ),內(nèi)容是PQ ETQUU PQ ETQYP。阿派照著字母念了幾遍,都沒(méi)有任何動(dòng)靜。忽然,他想到一種古老的加密方法——愷撒密碼。于是,他一遍又一遍地嘗試,終于發(fā)現(xiàn)若將所有字母都往前移2位,就可以形成一句有含義的話:NO CROSS NO CROWN(不經(jīng)歷風(fēng)雨,怎能見(jiàn)彩虹)。阿派大聲朗讀出破解的咒語(yǔ),只見(jiàn)一道金光閃現(xiàn)。

這節(jié)課的設(shè)計(jì)靈感來(lái)源于愷撒密碼的故事。傳說(shuō),古羅馬皇帝愷撒在打仗時(shí)曾經(jīng)使用“字母錯(cuò)位”的方法來(lái)加密軍事情報(bào)。本課中,教師帶領(lǐng)學(xué)生理解這種古老而簡(jiǎn)單的加密方法,并利用Python語(yǔ)言實(shí)現(xiàn)加密和解密。

● 愷撒密碼的加密和解密思想

在蘇托尼厄斯于公元二世紀(jì)寫的《愷撒傳》中,對(duì)愷撒密碼作了詳細(xì)描述,簡(jiǎn)而言之,就是將真正的信件內(nèi)容(明文)中的每一個(gè)字母用其后的第N個(gè)字母代替,轉(zhuǎn)換成一封密信(密文)。這樣,即便敵軍截住信件,也不知其意。據(jù)說(shuō),這種加密方法在當(dāng)時(shí)的古羅馬頗為流行。這種將字母表中的字母移動(dòng)一定位置而實(shí)現(xiàn)加密的方法,被稱為“愷撒移位密碼”,簡(jiǎn)稱“愷撒密碼”。移動(dòng)的位數(shù)N就是加密和解密的密鑰。

如圖1所示,前文中破解咒語(yǔ)的密鑰為2,也就是明文和密文表中的字母相錯(cuò)兩位。A加密后所對(duì)應(yīng)的字母就是后兩位的字母C,以此類推,且A~Z循環(huán),因此,字母Z的加密字母為B,解碼的過(guò)程正好與之相反。

愷撒密碼的編碼方法相對(duì)簡(jiǎn)單,密鑰也只有25種,只需逐個(gè)試驗(yàn),很容易破解,但這種加密、解密的思想影響深遠(yuǎn)?,F(xiàn)今的密碼術(shù)不斷發(fā)展,大致可分為兩種方法,即移位和替換,或者將兩者結(jié)合產(chǎn)生更復(fù)雜的方法,但萬(wàn)變不離其宗,其核心還是算法和密鑰。

● 破解咒語(yǔ)

愷撒密碼的算法思想,前面已經(jīng)解讀,此處不再贅述。但在Python中實(shí)現(xiàn)咒語(yǔ)的破解(解密),還需要了解字符在計(jì)算機(jī)中的表示方式。英文字母在計(jì)算機(jī)中通常采用ASCII碼表示,占一個(gè)字節(jié)。如圖2所示,密文中的字符P轉(zhuǎn)換為明文字符N的過(guò)程是這樣的:先利用ord()函數(shù)將ASCII字符P轉(zhuǎn)換為對(duì)應(yīng)的ASCII數(shù)值80;再根據(jù)密鑰2進(jìn)行倒推,計(jì)算出其明文的字符所對(duì)應(yīng)的數(shù)值應(yīng)為78;最后利用chr()函數(shù)將數(shù)值78轉(zhuǎn)換為對(duì)應(yīng)的ASCII字符N。在這里,ord()和chr()這兩個(gè)函數(shù)的效果正好相反,結(jié)合兩者,可以實(shí)現(xiàn)字符的加密或解密。

利用Python語(yǔ)言實(shí)現(xiàn)破解咒語(yǔ)的具體過(guò)程如上表所示。想一想,如何允許用戶自行輸入咒語(yǔ)的文字信息,該如何修改程序?

isupper( )方法的作用是檢測(cè)字符串中所有的字母是否都為大寫,如果所有字符都是大寫,則返回True,否則返回False。例如,字符A的ASCII碼值是65,密鑰為2,因此在前移2位后,ASCII碼值變成了63,對(duì)應(yīng)的字符是問(wèn)號(hào)“?”,非大寫字母。此時(shí),可在63的基礎(chǔ)上再向后移位26位,對(duì)應(yīng)碼值為89(字符Y),即字符A對(duì)應(yīng)的密文字符為Y。這樣,就形成了A~Z的循環(huán)。

● 加密咒語(yǔ)

本課中,阿派所破解的羊皮卷咒語(yǔ)是指定的密鑰2。加密的過(guò)程與解密相反,前移2位,變?yōu)楹笠?位,即-2。A~Z的循環(huán)處理,也是一樣,+26變?yōu)?26。此外,利用input()函數(shù),允許用戶自行輸入咒語(yǔ)內(nèi)容,具體的Python代碼如圖3所示。

upper( )方法的作用是將字符串中的字母全部轉(zhuǎn)換為大寫字母。這樣,如果用戶輸入的明文信息包含了大小寫字母,都會(huì)統(tǒng)一轉(zhuǎn)換為大寫字母,再進(jìn)行加密。

● 自定義密鑰加密咒語(yǔ)

使用不同的自定義密鑰進(jìn)行加密,可以提高信息傳遞過(guò)程中的安全性。如圖4所示,新增變量key,提示用戶選擇1~25之間的某一個(gè)整數(shù)作為密鑰,實(shí)現(xiàn)自定義密鑰的加密咒語(yǔ)。

如果想讓這段程序更加實(shí)用,還可以詢問(wèn)用戶選擇加密還是解密,多一次判斷,使用戶在同一個(gè)程序內(nèi)可以自由選擇加密或解密模式。

● 其他加密方法

由于愷撒密碼的秘鑰設(shè)置只有1至25,很容易被暴力破解,因此,人們?cè)诖嘶A(chǔ)上進(jìn)一步改善,主要方法是將密文的字母順序打亂。例如,圓盤密碼就是典型的利用單表置換的加密方法。在兩個(gè)同心圓盤上,外圈按照A~Z的字母序排列,內(nèi)圈則按不同的順序填好字母或數(shù)字。轉(zhuǎn)動(dòng)圓盤就可以找到字母的置換方法,很方便地進(jìn)行信息的加密與解密。愷撒密碼與圓盤密碼本質(zhì)都是一樣的,都屬于單表置換,即一個(gè)明文字母對(duì)應(yīng)的密文字母是確定的,截獲者可以分析字母出現(xiàn)的頻率進(jìn)行破譯。為了提高密碼的破譯難度,人們又發(fā)明了一種多表置換的密碼——維吉尼亞密碼。這種加密方法是根據(jù)密鑰決定用哪一行的密表來(lái)進(jìn)行替換。因此,一個(gè)明文字母可以表示為多個(gè)密文字母,使得針對(duì)單表置換的用詞頻分析來(lái)破譯的方法失效,安全性更高一些。古代密碼的編碼方法還有很多。例如,滾桶密碼(又稱密碼棒),利用字條纏繞木棒的方式,實(shí)現(xiàn)字母的位移,收信人要使用相同直徑的木棒才能還原真實(shí)的信息。隨著社會(huì)發(fā)展,現(xiàn)代密碼引入了公鑰和私鑰的概念,也被稱為非對(duì)稱密碼學(xué),與只用一個(gè)鑰匙的密鑰密碼學(xué)相對(duì)應(yīng)。從愷撒密碼,到現(xiàn)代密碼學(xué),你可以選擇一個(gè)有興趣的加密方法,了解更多加密原理,并利用Python來(lái)設(shè)計(jì)和編寫程序,試著模擬一次你的密信傳遞和破譯過(guò)程吧!

猜你喜歡
愷撒字符咒語(yǔ)
讓河流改道
Python實(shí)現(xiàn)圖片轉(zhuǎn)字符畫
讓河流改道
正則表達(dá)式快速入門
圖片輕松變身ASCⅡ藝術(shù)畫
咒語(yǔ)
法醫(yī)出手,愷撒瞑目
視頻監(jiān)視系統(tǒng)中字符疊加技術(shù)的應(yīng)用
愷撒的圈套
怪童丸的咒語(yǔ)
临夏县| 故城县| 武宣县| 六枝特区| 阳春市| 黄山市| 宜州市| 沧州市| 盐津县| 景东| 灯塔市| 宜黄县| 荣昌县| 积石山| 吴桥县| 襄汾县| 云和县| 穆棱市| 台安县| 神农架林区| 武宣县| 津市市| 东阳市| 新民市| 满城县| 青川县| 浙江省| 大连市| 绥德县| 新泰市| 华亭县| 南昌市| 毕节市| 扬中市| 营山县| 陈巴尔虎旗| 扶绥县| 荔波县| 聂拉木县| 甘肃省| 合山市|