導航:首頁 > 文檔加密 > 什麼是維吉尼亞加密

什麼是維吉尼亞加密

發布時間:2023-07-28 21:18:05

Ⅰ 簡單的加密演算法——維吉尼亞密碼

學號:16030140019

姓名:   莫益彰

【嵌牛導讀】:凱撒密碼是一種簡單的加密方法,即將文本中的每一個字元都位移相同的位置。如選定位移3位:

原文:a b c

密文:d e f

由於出現了字母頻度分析,凱撒密碼變得很容易破解,因此人們在單一愷撒密碼的基礎上擴展出多表密碼,稱為「維吉尼亞」密碼。

【嵌牛鼻子】密碼學,計算機安全。

【嵌牛提問】維吉尼亞怎麼破解,8位維吉尼亞是否可破?維吉尼亞演算法的時間復雜度?

【嵌牛正文】

維吉尼亞密碼的加密

維吉尼亞密碼由凱撒密碼擴展而來,引入了密鑰的概念。即根據密鑰來決定用哪一行的密表來進行替換,以此來對抗字頻統計。假如以上面第一行代表明文字母,左面第一列代表密鑰字母,對如下明文加密:

TO BE OR NOT TO BE THAT IS THE QUESTION

當選定RELATIONS作為密鑰時,加密過程是:明文一個字母為T,第一個密鑰字母為R,因此可以找到在R行中代替T的為K,依此類推,得出對應關系如下:

密鑰: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)的密碼中,發件人和收件人必須使用同一個關鍵詞(或者同一文字章節),這個關鍵詞或文字章節中的字母告訴他們怎麼樣才能前後改變字母的位置來獲得該段信息中的每個字母的正確對應位置。

維吉尼亞密碼的破解

維吉尼亞密碼分解後實則就是多個凱撒密碼,只要知道密鑰的長度,我們就可以將其分解。

如密文為:ABCDEFGHIJKLMN

如果我們知道密鑰長度為3,就可將其分解為三組:

組1:A D G J N

組2:B E H K

組3:C F I M

分解後每組就是一個凱撒密碼,即組內的位移量是一致的,對每一組即可用頻度分析法來解密。

所以破解維吉尼亞密碼的關鍵就是確定密鑰的長度。

確定密鑰長度

確定密鑰長度主要有兩種方法,Kasiski 測試法相對簡單很多,但Friedman 測試法的效果明顯優於Kasiski 測試法。

Kasiski 測試法

在英文中,一些常見的單詞如the有幾率被密鑰的相同部分加密,即原文中的the可能在密文中呈現為相同的三個字母。

在這種情況下,相同片段的間距就是密文長度的倍數。

所以我們可以通過在密文中找到相同的片段,計算出這些相同片段之間的間距,而密鑰長度理論上就是這些間距的公約數。

然後我們需要知道重合指數(IC, index of coincidence)的概念。

重合指數表示兩個隨機選出的字母是相同的的概率,即隨機選出兩個A的概率+隨機選出兩個B的概率+隨機選出兩個C的概率+……+隨機選出兩個Z的概率。

對英語而言,根據上述的頻率表,我們可以計算出英語文本的重合指數為

P(A)^2 + P(B)^2+……+P(Z)^2 = 0.65

利用重合指數推測密鑰長度的原理在於,對於一個由凱撒密碼加密的序列,由於所有字母的位移程度相同,所以密文的重合指數應等於原文語言的重合指數。

據此,我們可以逐一計算不同密鑰長度下的重合指數,當重合指數接近期望的0.65時,我們就可以推測這是我們所要找的密鑰長度。

舉例來說,對密文ABCDEABCDEABCDEABC

首先測試密鑰長度=1,對密文ABCDEABCDEABCDEABC統計每個字元出現的次數:

A: 4 B: 4 C: 4 D:3 E:3

那麼對於該序列的重合指數就為:(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分別計算重合指數。

如果組1的重合指數接近0.65,組2的重合指數也接近0.65,那麼基本可以斷定密鑰長度為2。

在知道了密鑰長度n以後,就可將密文分解為n組,每一組都是一個凱撒密碼,然後對每一組用字母頻度分析進行解密,和在一起就能成功解密凱撒密碼。

上文已經說到,自然語言的字母頻度是一定的。字母頻度分析就是將密文的字母頻度和自然語言的自然頻度排序對比,從而找出可能的原文。

閱讀全文

與什麼是維吉尼亞加密相關的資料

熱點內容
腰椎第五節壓縮性骨折 瀏覽:89
程序員開會的句子 瀏覽:990
用哪個app寫編程 瀏覽:643
android通訊錄增刪改查 瀏覽:727
車貸解壓過戶可以同時進行嗎 瀏覽:917
java面向對象編程題目 瀏覽:876
二次元壓縮包 瀏覽:698
stc模擬器編程器 瀏覽:155
伺服器銷售怎麼做好 瀏覽:87
什麼是com編程 瀏覽:848
演算法工程師最新資訊 瀏覽:608
郵政銀行卡怎麼在app簽約綁定 瀏覽:49
壓縮卷一直轉 瀏覽:976
初一編程小程序怎麼做 瀏覽:826
bt軟體文件夾名稱 瀏覽:157
unix創建命令 瀏覽:622
devc是多少位的編譯器 瀏覽:981
怎麼樣能快點升安卓系統 瀏覽:977
奇跡mu用什麼伺服器 瀏覽:605
如何讓軟體在多個安卓系統上運行 瀏覽:575