本篇文章給大家談?wù)劸S吉尼亞密碼,以及維吉尼亞密碼怎么加密對應(yīng)的知識點,希望對各位有所幫助,不要忘了收藏本站喔。

簡單的加密算法——維吉尼亞密碼
學(xué)號:16030140019
姓名:?? 莫益彰
【嵌牛導(dǎo)讀】:凱撒密碼是一種簡單的加密方法,即將文本中的每一個字符都位移相同的位置。如選定位移3位:
原文:a b c
密文:d e f
由于出現(xiàn)了字母頻度分析,凱撒密碼變得很容易破解,因此人們在單一愷撒密碼的基礎(chǔ)上擴展出多表密碼,稱為“維吉尼亞”密碼。
【嵌牛鼻子】密碼學(xué),計算機安全。
【嵌牛提問】維吉尼亞怎么破解,8位維吉尼亞是否可破?維吉尼亞算法的時間復(fù)雜度?
【嵌牛正文】
維吉尼亞密碼的加密
維吉尼亞密碼由凱撒密碼擴展而來,引入了密鑰的概念。即根據(jù)密鑰來決定用哪一行的密表來進(jìn)行替換,以此來對抗字頻統(tǒng)計。假如以上面第一行代表明文字母,左面第一列代表密鑰字母,對如下明文加密:
TO BE OR NOT TO BE THAT IS THE QUESTION
當(dāng)選定RELATIONS作為密鑰時,加密過程是:明文一個字母為T,第一個密鑰字母為R,因此可以找到在R行中代替T的為K,依此類推,得出對應(yīng)關(guān)系如下:
密鑰:RE LA ?TI ?ONS ?RE LA TION ? SR ELA TIONSREL
明文:TO BE OR NOT TO BE THAT ?IS ?THE QUESTION
密文:KS ME HZ ?BBL ?KS ME MPOG AJ XSE JCSFLZSY
圖解加密過程:
????????在維吉尼亞(Vigenère)的密碼中,發(fā)件人和收件人必須使用同一個關(guān)鍵詞(或者同一文字章節(jié)),這個關(guān)鍵詞或文字章節(jié)中的字母告訴他們怎么樣才能前后改變字母的位置來獲得該段信息中的每個字母的正確對應(yīng)位置。
維吉尼亞密碼的破解
維吉尼亞密碼分解后實則就是多個凱撒密碼,只要知道密鑰的長度,我們就可以將其分解。
如密文為:ABCDEFGHIJKLMN
如果我們知道密鑰長度為3,就可將其分解為三組:
組1:A D G J N
組2:B E H K
組3:C F I M
分解后每組就是一個凱撒密碼,即組內(nèi)的位移量是一致的,對每一組即可用頻度分析法來解密。
所以破解維吉尼亞密碼的關(guān)鍵就是確定密鑰的長度。
確定密鑰長度
確定密鑰長度主要有兩種方法,Kasiski 測試法相對簡單很多,但Friedman 測試法的效果明顯優(yōu)于Kasiski 測試法。
Kasiski 測試法
在英文中,一些常見的單詞如the有幾率被密鑰的相同部分加密,即原文中的the可能在密文中呈態(tài)知現(xiàn)為相同的三個字母。
在這種情況下,相同片段的間距就是密文長度的倍數(shù)。
所以我們可以通過在密文中找到相同的片段,計算出這些相同片段之間的間距,而密鑰長度理論上就是這些間距的公約數(shù)。
然后我們需要知道重合指數(shù)(IC, index of coincidence)的概念。
重合指數(shù)表示兩個隨機選出的字母是相同的的概率,即隨機選出兩個A的概率+隨機選出兩個B的概率+隨機選出兩個C的概率+……+隨機選出兩個Z的概率。
對英語而言,根據(jù)上述的頻率表,我們可以計算出英語文本的重合指數(shù)為
P(A)^2 + P(B)^2+……+P(Z)^2 = 0.65
利用重合指數(shù)推測密鑰長度的原理在于,對于一個由凱撒密碼加密的序列,由于所有字母的位移程度相同,所以密文的重合指數(shù)應(yīng)等于原文語言的重合指數(shù)。
據(jù)此,我們可以逐一計算不同密鑰長度下的重合帆喚消指數(shù),當(dāng)重合指數(shù)接近期望的0.65時,我們就可以推測這是我們所要找的密鑰長度。
舉例來鏈褲說,對密文ABCDEABCDEABCDEABC
首先測試密鑰長度=1,對密文ABCDEABCDEABCDEABC統(tǒng)計每個字符出現(xiàn)的次數(shù):
A: 4 B: 4 C: 4 D:3 E:3
那么對于該序列的重合指數(shù)就為:(4/18)^2 +?(4/18)^2 +?(4/18)^2 +(3/18)^2?+(3/18)^2 != 0.65
然后測試密鑰長度=2,將密文ABCDEABCDEABCDEABC分解為兩組:
組1:A C E B D A C E B
組2:B D A C E B D A C
我們知道如果密鑰長度真的是2,那么組1,組2都是一個凱撒密碼。對組1組2分別計算重合指數(shù)。
如果組1的重合指數(shù)接近0.65,組2的重合指數(shù)也接近0.65,那么基本可以斷定密鑰長度為2。
在知道了密鑰長度n以后,就可將密文分解為n組,每一組都是一個凱撒密碼,然后對每一組用字母頻度分析進(jìn)行解密,和在一起就能成功解密凱撒密碼。
上文已經(jīng)說到,自然語言的字母頻度是一定的。字母頻度分析就是將密文的字母頻度和自然語言的自然頻度排序?qū)Ρ?,從而找出可能的原文?/p>
請比較凱撒密碼維吉尼亞密碼普萊費爾密碼的異同點
比較凱撒密碼維吉羨基尼亞密碼普萊費爾密碼的異同點:
1、維吉尼亞密碼運派運是使用一系列凱撒密碼組成密碼字母旁梁表的加密算法,屬于多表密碼的一種簡單形式。
2、凱撒密碼作為一種最為古老的對稱加密體制,在古羅馬的時候都已經(jīng)很流行,他的基本思想是:通過把字母移動一定的位數(shù)來實現(xiàn)加密和解密。
維吉尼亞密碼
? ? ? 維吉尼亞密碼是以法國外交官、密碼學(xué)家布萊斯·德·維吉尼亞的名字命名的,不過不是他本人發(fā)明的。
【加密原理】
? ? ? 維吉尼亞盯悶密碼是在凱撒密碼的基礎(chǔ)上產(chǎn)生的一種加密方法,它將凱撒密碼的全部25種位移排源隱序為一張表,與原字母序列共同組成26行26列的密碼表。
? ? ? 除了密碼表,還必須有一個密鑰。密鑰由字母組成,最少一個字母,最多可與明文字母數(shù)相等。如果密鑰只有1個字母,相當(dāng)于就是凱撒密碼。舉個例子:
明文:I Love You
密鑰:OK
? ? ? 首先,密鑰長度需要與明文長度相同,如果少于明文長度,則重復(fù)拼接直到長度相等。本例中,明文長度為8個字母(非字母忽略),密鑰補全為“OKOKOKOK”。
? ? ? 然后根據(jù)密碼表進(jìn)行加密。明文第一個字母是“I”,密鑰第一個字母是“O”,在表格中找到“I”列雹則廳與“O”行的相交點,字母“W”就是密文的第一個字母。同理,“L”列與“K”行交點字母是“V”?!癘”列與“O”行交點字母是“C”……以此類推,得到密文: W?VCFS?ICE。
【解密原理】
密文:PWZRNZBZ?EA?NQKBUHN?LNB
密鑰:wind
? ? ? 首先把密鑰重復(fù)拼接到和密文長度相同,上例中密文為20位字母,密鑰拼接后為:windwindwindwindwind。
? ? ? 密文P對應(yīng)密鑰W,在密碼表中找出W行為P的列,沿著這一列向上找到最上面的字母是T。以此類推,得到明文:tomorrow is another day。
維吉尼亞密碼:加密強悍,卻為何沒人用?
維吉尼亞加密法。
講到概率論出現(xiàn)之后,傳統(tǒng)的移位法就不好使了。
維吉尼亞加密法,就是為了對抗頻率分析出現(xiàn)的——使用這套加密激畝方法之后,字母的頻率特征會消失。
一般認(rèn)為,做出這套加密法的是法國外交官布萊斯·德·維吉尼亞。
但這個結(jié)論有很多爭議,在他之前40多年的德國煉金術(shù)士約翰尼斯發(fā)明的表格法,也包含其中關(guān)鍵部分;在他之前80多年,意大利詩人萊昂也提出過這種方法的關(guān)鍵部分。
一個發(fā)明到底歸屬誰有必要考據(jù)細(xì)節(jié)嗎?
當(dāng)然沒有。我主要是想指出一個規(guī)律——凡是出現(xiàn)了一個發(fā)明權(quán)一堆人搶的情況,就說明那個領(lǐng)域已經(jīng)形成了成熟的行業(yè)。
密碼學(xué)也是如此。我們暫且認(rèn)為維吉尼亞就是發(fā)明人吧。問題來了,他一個外交官怎么會對密碼學(xué)研究那么深呢?有兩個原因:
在18世紀(jì)初,歐洲各國都有隸屬于情報機構(gòu),專門負(fù)責(zé)加密解密的部門,叫“黑房廳”。它是和郵政系統(tǒng)配合運行的。
每天有大批信件本來是從各地寄到郵局,再從郵局分發(fā)出去。黑房廳出現(xiàn)后,一部分信就不是從郵局直接遞給收信人了,而是要先經(jīng)過黑房廳,再送到收信人手里。
哪部分信件要繞這么一道彎兒呢?
其實就是所有寄給當(dāng)?shù)卮笫桂^的信件,會受到這種特殊待遇。因為這里很可能有機密信息。
雖然我直接把內(nèi)幕說出來了,但黑房廳在當(dāng)年運作的時候是完全保密的,人不知鬼不覺。信件不能因為破譯需要時間,而讓對方使領(lǐng)館人員察覺到遞送超時。
以當(dāng)時最著名的維也納黑房廳來說,每天早上7點,信件先抵達(dá)黑房廳,工作人員小心翼翼的融開封口,由專門的速記員把信件謄寫抄錄,如果是很偏門的語言,就由專家出馬謄寫。然后馬上把信封好口,在三小時內(nèi)送回郵局,郵局再按正常流程遞送出去。
那時各國都在重要信件上使用了加密法,最初普遍采用替代法和移位法的混合,但對掌握頻率分析法的黑房廳來說,總是可以破譯。
奧地利除了自己偷看信,還暗中把明簡森消息賣給其他國家的情報部門。沒過幾年,很多國家察覺到自己的加密可能失效了,于是就催生出下一代加密法。
為了弄懂后面新的加密法,我們有必要先來回顧一下第二代加密法存在哪些漏洞。
講了替代法的破解原理,因為每個字母實際使用的頻率是有固定值的,所以不論那些字母被什么符號替代了,都可以從頻率上找出它的真身。
瑪麗女王就生活在加密法打不過解密法的年代。其實在她被砍頭的40年前,新的加密法已經(jīng)出現(xiàn)了,它是替代法的改進(jìn)版,叫“多套符號加密法”。
為了掩蓋字母使用中暴露的頻率特征,解決辦法就是用多套符號代替原來的文字,比如原文的字母是A,從前只把它替換成F,現(xiàn)在把它替換成F或者G這兩個。那什么時候用F什么時候用G呢咐旅?可以自行規(guī)定,比如說,字母在奇數(shù)位時用F代替,字母在偶數(shù)位時用G代替。
從前單套符號替代的時候,凡是文字中頻率為7.63%的符號,差不多就代表A了。但現(xiàn)在A由F和G混合在一起,7.63%的特征不再出現(xiàn),哪個符號代表A就沒人知道了,于是頻率分析法暫時失效。
而且,多套符號加密法并沒滿足于2-3套,后來典型使用的是26套。
這個用了26套字符的方法,就是第三代密碼“維吉尼亞加密法”。就是它,成功壓制了解密一方的頻率分析法。
它是一個表格,第一行代表原文的字母,下面每一橫行代表原文分別由哪些字母代替,每一豎列代表我們要用第幾套字符來替換原文。一共26個字母,一共26套代替法,所以這個表是一個26×26的表。
維吉尼亞密碼表
它具體是怎么加密呢?
假設(shè)我要給“hello”加密,現(xiàn)在的思路和單套的加密方法不一樣了。單套的時候,我們可以指定這個表里任意一橫行,比如指定第8行的意思就是說,原文中的字母都往后移8位,只使用這一行的規(guī)則,“hello”就變成了PMTTW。
但現(xiàn)在我們的思路是用多套密碼,不能只用第8行第8套。于是我們就這樣指定:
你說這聽著怎么這么亂???具體每個字母移動多少位竟然要單獨指定,太麻煩了吧?
如果原文只是hello這種詞還好,要是一封信的話,一個字母一個字母的規(guī)定用哪套替代,不但加密費勁,解讀也費勁。只能單獨再寫一本說明書出來,照著它一個字母一個字母的還原,費時費力、容易出錯不說,連加密的初衷都實現(xiàn)不了。
因為這份說明書的文字量比原文還要多得多,而且這個說明書還必須以誰都可以看懂的方式書寫。想讓收信方看明白,必須要送一本加密說明書給對方,如果說明書被截獲,內(nèi)容也就白加密了。
這個問題是這么解決的:
第三代的維吉尼亞加密法在真實使用時,人們事先規(guī)定每個字母用了哪套移位法時,并不是毫無規(guī)律的瞎指定,而是要約定一個規(guī)則,這個規(guī)則就叫作 “ 鑰匙 ”。
鑰匙最初只是一個單詞,比如,像鑰匙是yes,那怎么加密呢?
你看,yes的y是第25個字母,就代表加密時把原文第一個字母往后移25位;yes的第二個字母e是字母表中第5個字母,就代表把原文的第二個字母往后移5位;yes的第三個字母s在字母表中是第19個字母,就代表把原文第3個字母后移19位。這樣原文的前三個字母,就分別用了第25套、第5套、第19套替代法。
那原文第4個、第5個、第6個字母怎么解決呢?好辦,就按剛剛的規(guī)則循環(huán)就好。
這樣“hello”在鑰匙是yes的情況下,就被加密成了FIDJS。
這樣的好處是,原文里同一個字母會被加密成不同字符,hello中的兩個“l(fā)”分別變成了D和J。而且密文中同樣的字符也可能代表不同的原文,誰和誰都不對應(yīng)。
1586年,維吉尼亞把這個想法寫在了《密碼論》中發(fā)表。
而上節(jié)課我們說的瑪麗女王是在1587年被砍的頭,如果她和反叛軍能用到這本書里的加密方法,也許會是另一種命運。
維吉尼亞法相比從前的加密法,破解難度上了一個新的臺階,按理說應(yīng)該倍受青睞吧?結(jié)果恰恰相反——它在出現(xiàn)后的200年里,幾乎沒有人使用。
原因很簡單,太麻煩了。咱們第一節(jié)課就講到,真正好用的密碼,是在安全性和效率上找到了平衡點。
你想,用單套密碼的時候,當(dāng)年瑪麗女王稍作訓(xùn)練,在監(jiān)獄里就可以拋開字典直接用密文回信,但是如果用維吉尼亞密碼的話,估計她老得翻字典。
而且大家也可以設(shè)身處地的想想,加密法可是一套26×26的表格,而且還有長短不一的鑰匙。每加密一個字母,都要在表格里找來找去,就算是在熟練操作的情況下,加密一個字母也得要3秒鐘的時間。寫完一篇500字的短文,要3個多小時的高強度工作。慢還不說,這樣來回來去的查和寫,還容易出錯。
所以在它誕生后的200多年時間里,幾乎沒有人用。既然沒人使用,自然200多年也就沒有人破解。
直到1861年到1865年美國南北戰(zhàn)爭時期,維吉尼亞加密法才被廣泛使用。
為什么會這樣?是因為人們腦子變聰明了,手更快了嗎?
不是的,而是因為隨著科學(xué)技術(shù)的發(fā)展,那時候加密解密的工作已經(jīng)可以由機械來完成。1860年代,不但已經(jīng)有了蒸汽機,也有了電動機,這種有規(guī)律的體力活兒機器是最擅長干的,既不會抱怨累,也不太會出錯。
從維吉尼亞法推遲200多年才得到實際使用,我們能明白一個道理——
基礎(chǔ)學(xué)科的發(fā)展是工程領(lǐng)域發(fā)展的根基,新理論的發(fā)明要比產(chǎn)品的發(fā)明重要得多。
就算是只限于密碼學(xué)領(lǐng)域,這個規(guī)律也反復(fù)出現(xiàn)了多次,而且大都集中在維吉尼亞密碼法誕生之后。
因為16世紀(jì)初,現(xiàn)代科學(xué)已經(jīng)在歐洲出現(xiàn)了??茖W(xué)理論用得好就能生出新技術(shù),新技術(shù)解決一個個困難,讓人類更愿意把精力投入到科學(xué)中,于是又產(chǎn)生出更多的技術(shù),形成了一個正反饋。
在這樣一個新環(huán)境里,出現(xiàn)了一個有意思的情況:
維吉尼亞加密法是這樣,維吉尼亞加密法的破解也一樣是這樣。
這并不是偶然,而是現(xiàn)代科學(xué)出現(xiàn)后的常態(tài),在任何領(lǐng)域都是如此。
知道了這個規(guī)律,我們就會少一分對偉大發(fā)明家的崇拜,多一分對背后科學(xué)原理的敬畏。
維吉尼亞密碼(Vigenère cipher)
維吉尼亞密碼引入了“密鑰”的概念,即根據(jù)密鑰來決定用哪一行的密表來進(jìn)行替換,以此來對抗字頻統(tǒng)計。假如以上面第一行段晌搭代表明文字母,左面第一列代表密鑰字母,對如下明文加密:
TO BE OR NOT TO BE THAT IS THE QUESTION
當(dāng)選定RELATIONS作為密鑰時,加密過程是:謹(jǐn)配明文一個字母為T,第一個密鑰字母為R,因此可以找到在R行中代替T的為K,依此類推,得出對應(yīng)關(guān)系如下握拿:
密鑰:RE LA TI ONS RE LA TION SR ELA TIONSREL
明文:TO BE OR NOT TO BE THAT IS THE QUESTION
密文:KS ME HZ BBL KS ME MPOG AJ XSE JCSFLZSY
與凱撒密碼類似,進(jìn)行一下運算兩次即可









