古典密码及现代密码分组密码与流密码总结
古典密碼及現代密碼分組密碼與流密碼總結
古典密碼大部分加密方式是利用替換式密碼或移項式密碼,有時是二者的混合。一般情況下,一種古典密碼體制包含一個字母表,以及一個操作規則或一種操作設備,到了現代基本不可信賴。
1.凱撒密碼
是一種最簡單廣為人知的加密技術,是一種替換加密技術,明文中所有字母都在字母表上向后(或向前)按照一個固定數目進行偏移后被替換成密文。
加密公式:密文 = (明文 + 位移數) Mod 26
解密公式:明文 = (密文 - 位移數) Mod 26
破解方法:可以使用窮舉法輕易破解。
2.維吉尼亞密碼
是使用一系列凱撒密碼組成密碼字母表的加密算法,屬于多表密碼的簡單形式。
首先循環密鑰形成密鑰流,使之與明文長度相同。
而后根據每位密鑰對原文進行加密,假設密鑰為字母,偏移量為字母對應序號-1。比如第一位密鑰M對應第13個字母,偏移量為13-1=12。假設第一個明文為C,加密后的密文應為(C+12)mod26,即O。
破解方法:尋找密文中相同的連續字符串,密鑰長度一定為其間隔的引述,或尋找典型特殊單詞。
3.培根密碼
一種隱寫術,加密時,銘文中的每個字母都會轉換成一組5個英文字母
4.豬圈密碼
是一種以各自為基礎的簡單替代式密碼。
例如:對明文“X marks the spot”進行加密,下圖為密文。
5.柵欄密碼
把加密的明文分成每N個一組,然后把每組的第1個字符連起來,形成一段無規律的字符串。不過柵欄密碼本身有一個潛規則,就是組成柵欄的字母一般不會太多。(一般不超過30個)
在選擇行數時可以使多行,這樣對于加密強度有所提高。
6.曲路密碼
曲路密碼與柵欄密碼一樣,也是換位密碼的一種,密鑰為曲路路徑。
未加密文段為:Welcome to the DedSec
然后按照事先約定的序列填入3X6的列表里
加密方與解密方互相約定加密路線
這樣加密密文為
密文:cem ohe Stc lod ete WeD。
7.摩斯密碼
摩斯密碼也被稱作摩爾斯電碼,是一種時通時斷的信號代碼,通過不同的排列順序來表達不同的英文字母、數字和標點符號。它的代碼包括五種:短促的點信號“?”,讀“滴”(Di)保持一定時間的長信號“—”,讀“嗒”(Da)表示點和劃之間的停頓、每個詞之間中等的停頓,以及句子之間長的停頓;一點作為一個基本的信號單位,一劃的長度就相當于是3點的時間長度;在一個字母或是數字之內,每個點、劃之間的間隔就應該是兩點的時間長度;字母(數字)與字母(數字)之間的間隔就是7點的時間長度
現代密碼
分組密碼
又稱為分塊加密或塊密碼,是一種對稱密碼算法,將明文分為多個等長的塊,使用確定的算法和對稱密鑰對每組分別加密或解密。
本質上時一種特殊的替代密碼,只不過每次替換的都是一大塊。
分組密碼自身只能加密長度等于密碼分組長度的單塊數據,最后一塊數據需要使用合適的填充方式將數據擴展道匹配密碼塊大小的長度。
分組密碼常見的工作模式:
1.ECB(電子密碼本)
是分組加密最簡單的一種模式,即明文中的每個塊都獨立地加密成密文的每個塊,明文長度不是分組長度的倍數,則需要用一些特定的方法進行填充。
缺點:同樣的明文塊會被加密成相同的密文塊,因此不能很好的隱藏數據模式。
2.CBC(密碼分組鏈接)
每個明文塊先和前一個密文塊進行異或后再進行加密。在這種方法中,每個密文塊都依賴于它前面的所有明文塊;同時未來保證每條消息的唯一性,在第1個塊中需要使用初始化向量。
3.OFB(輸出反饋模式)
可以將塊密碼變成同步的流密碼。將之前一次的加密結果使用密鑰再次進行加密,產生的塊作為密鑰流,然后將其與明文塊進行異或,得到密文。由于異或操作的對稱性,加密和解密操作是完全相同的。反饋的是是每一組的輸出再次經過加密算法后的輸出。
4.CFB(密文反饋)
類似OFB,將上一組的密文作為下一組的輸入來加密進行反饋
5.CTR(CM)
又稱ICM模式、SIC模式。與OFB類似,CTR將塊密碼變為流密碼,通過遞增一個加密計數器來產生連續的密鑰流。計數器可以是任意保證長時間不產生重復輸出的函數,但使用一個 普通的計數器是最簡單和最常見的做法。CTR模式的特征類似OFB,但允許在解密時進行隨機存取。
費斯妥密碼
用于構造分組密碼的對稱結構,通常稱為Feistel網絡。
優點:
加密和解密操作非常相似,在某些情況下甚至是相同的,只需要逆轉密鑰編排即可
注意:
費斯妥密碼再每輪的加密中只加密了一半的字符,而且輪函數F并不需要可逆,F可以看成是一個隨機數生成器。
DES(數據加密標準)
DES算法為密碼體制中的對稱密碼體制,又被稱為美國數據加密標準。
DES是一個分組加密算法,典型的DES以64位為分組對數據加密,加密和解密用的是同一個算法。
密鑰長64位,密鑰事實上是56位參與DES運算(第8、16、24、32、40、48、56、64位是校驗位,使得每個密鑰都有奇數個1),分組后的明文組和56位的密鑰按位替代或交換的方法形成密文組。
DES算法的主要流程如下圖所示。
初始置換(IP)
首先,DES會對用戶的輸入進行處理,稱為初始置換,用戶的置換會按照下表的順序進行。IP置換的功能是把輸入的64位數據塊M按位重新組合,并把輸出分為L0、R0兩部分,每部分各長32位,其置換規則見下表:
按照表中的索引,用戶輸入M的第558位會成為這個過程的結果IP的第1位,以此類推,M的第50位會成為IP的第二位……L0為新數據的左32位,置換后的數據分為L0和R0兩部分,R0為新數據的右32位。
AES
又稱為Rijndael加密法,用來代替DES,已經廣為全世界所使用。在每輪都對全部的128位進行了加密。且加密過程是在4*4字節大小的矩陣上運作的,這個矩陣稱為“體”,其初值是一個明文區塊(矩陣中一個元素就是明文區塊的1Byte)
各輪加密算法循環(除最后一輪外)均包含4個步驟:
(1)AddRoundKey(輪密鑰加)
(2)SubBytes(字節替換)
(3)ShiftRows(行移位)
(4)MixColumns(列混合)
流密碼
也稱序列密碼,它是對稱密碼算法的一種?;咎卣魇羌咏饷茈p方使用一串與明文長度相同的密鑰流,與明文流組合來進行加解密。序列密碼具有實現簡單、便于硬件實施、加解密處理速度快、沒有或只有有限的錯誤傳播等特點,因此在實際應用中,特別是專用或機密機構中保持著優勢,典型的應用領域包括無線通信、外交通信。
同步流密碼(SSC):產生密鑰序列的算法與明文,密文無關。
只要通信雙方的密鑰序列產生器具有相同的 “種子序列”和相同的“初始狀態”,就能產生相同的密鑰序列。
通信雙方必須保持精確同步,才能正確解密
容易檢測插入、刪除、重播等主動攻擊。
沒有差錯傳播。
自同步流密碼(SSSC):產生密鑰序列的算法與以前的密文有關。
線性反饋移位寄存器(LFSR)
是數字電路中常見的一種器件,可以并行輸入若干位進行初始化,并可進行移入、移出等操作,常被用于產生序列信號。由一個移位寄存器,一個反饋函數組成,反饋函數為一個線性函數。
RC4
是一種特殊的流加密算法,是有線等效加密(WEP)中采用的加密算法,曾經是TLS可采用的算法之一。
易受到已知明文攻擊的影響。如果使用某一密鑰加密了n字節的數據,并知道明文,即可恢復n字節的流密鑰。
總結
以上是生活随笔為你收集整理的古典密码及现代密码分组密码与流密码总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android自定义View实战:影院在
- 下一篇: OpenDRIVE工具介绍及地址