CTF密碼學常見加密解密總結

CTF密碼學常見加密解密總結

被實驗吧一堆大佬出題人折磨的死去活來的我,嚶嚶嚶。在此做個總結,防止自己忘掉:

由下面這張思維導圖進行擴展:
在這裏插入圖片描述
參考:
作者:adversity` 來源:CSDN 原文:https://blog.csdn.net/qq_40836553/article/details/79383488
作者:大龍博客 來源:CSDN 原文:https://blog.csdn.net/gelong_bokewang/article/details/88527929
作者:前端弟弟 來源:CSDN 原文:https://blog.csdn.net/qq_41681743/article/details/82700911

編碼:

1.Base64編碼

Base64是網絡上最常見的用於傳輸8Bit字節碼的編碼方式之一,base64就是一種基於64個可打印字符來表示二進制數據的表示方法。由於2的6次方等於64,所以每6個比特爲一個單元,對應某個可打印字符。三個字節有24個比特,對應4個base64單元,即3個字節可表示4個可打印字符。它可用來作爲電子郵件的傳輸編碼。

特徵:(1)在base64中的可打印字符包括字母A-Z、a-z、數字0-9,+ / =。
(2)永遠是4的倍數,不足四的用=補齊。
例如:編碼‘Man’

在此例中,base64算法將3個字符編碼轉爲4個字符
base64索引表:

如果要編碼的字節數不能被3整除,最後會多出1個或2個字節,那麼可以使用下面的方法進行處理:先使用0字節值在末尾補足,使其能夠被3整除,然後再進行base64的編碼。在編碼後的base64文本後加上一個或兩個“=”號,代表補足的字節數。也就是說,當最後剩餘一個八位字節(一個byte)時,最後6位的base64字節塊有四位是0值,最後附加上兩個等號;如果最後剩餘兩個八位字節(2byte)時,最後一個6位的base字節塊有兩位是0值,最後附加一個等號
例如:

當看到號的加密方式時,可以考慮base64。例:cTZ1NQ解碼之後爲q5u5。

關於base32:
base32中只有大寫字母(A-Z)和數字234567

關於base16:
base16中只有數字0-9以及大寫字母ABCDEF

base64編碼轉圖片: 在"data:image/gif;base64,"後加上Base64編碼 在線轉圖片即可
python3使用base64、base32、base16編碼
在線解密
Base系列解密

2 . jother編碼

在javascript語言中,利用少量特定字符構造精簡的匿名函數對與字符串的編碼方式.代碼中大量出現“+”、“!”、“(”、“)”、“[”、“]”、“{”、“}"字符

例如:!![]+!![]+!![]+!![]+!![]+!![]

具體請看:

谷歌瀏覽器控制檯可解碼

3. unicode編碼

Unicode碼擴展自ASCII字元集,使用全16位元字元集.Unicode目前普遍採用的是UCS-2,它用兩個字節來編碼一個字符,字符編碼一般用十六進制來表示.

例如:\u4e16\u754c\u4f60\u597d
hello world

unicode編碼表
在線解碼

4.url編碼(十六進制的%編碼)

URL編碼遵循下列規則: 每對name/value由&;符分開;每對來自表單的name/value由=符分開。如果用戶沒有輸入值給這個name,那麼這個name還是出現,只是無值。任何特殊的字符(就是那些不是簡單的七位ASCII,如漢字)將以百分符%用十六進制編碼,當然也包括象 =,&;,和 % 這些特殊的字符。其實url編碼就是一個字符ascii碼的十六進制。不過稍微有些變動,需要在前面加上"%"。比如"",它的ascii碼是92,92的十六進制是5c,所以"“的url編碼就是%5c。那麼漢字的url編碼呢?很簡單,看例子:“胡"的ascii碼是-17670,十六進制是BAFA,url編碼是”%BA%FA”。

在線解碼

5.hex編碼

Hex 全稱 是Intel HEX。Hex文件是由一行行符合Intel HEX文件格式的文本所構成的ASCII文本文件。在Intel HEX文件中,每一行包含一個HEX記錄。這些記錄由對應機器語言碼和/或常量數據的十六進制編碼數字組成。

Hex編碼的編碼原理:

  • Hex編碼的原理就是將原來8位的二進制字節打斷,分成兩個4位的,並且在前面加上4個零,
  • 進行補位這樣一個8位二進制字節就變成了2個8位的二進制字節,在將新得到的2個二進制字符進行16位進制轉換
  • 得到的新的16位字符串就是Hex的值,所以 二進制的[72, 69, 88] 《hex》 484558是相等的。
  • [72, 69, 88]byte數組的二進制=‭01001000‬ ‭01000101‬ ‭01011000‬
  • 二進制=‭01001000‬ ‭01000101‬ ‭01011000‬ 進行hex的打斷操作 ‭0100 1000‬ ‭0100 0101‬ ‭0101 1000
  • 在加上前面的4個零得到一個新的6個8位二進制 = 0000‭0100 00001000 ‬0000‭0100 00000101‬ 0000‭0101 00001000
  • 新的6個8位二進制 進行16進制轉換 0000‭0100 00001000 ‬0000‭0100 00000101‬ 0000‭0101 00001000 = 484558
  • 總結所以說Hex編碼後的二進制長度變爲了原來的2倍,所以字節長度增加了一倍。

Hex的編碼過程:
字符串: HEX
ASCII碼: [72,69,88]
二進制碼: ‭01001000‬ ‭01000101‬ ‭01011000‬
重新分組: 0100 1000 0100 0101 0101 1000
高位補零後的二進制碼: 00000100 00001000 00000100 00000101 00000101 00001000
十六進制碼: 4 8 4 5 5 8
hex碼: 484558

解碼可通過 Notepad++裏的 HEX-editor 插件解碼

核心價值觀編碼解碼

如題…奇葩的編碼方式…在線解碼

16進制轉字符串

在線解密

古典密碼——單表替換

1.凱撒密碼

通過把字母移動一定的位數來實現加密和解密。明文中的所有字母都在字母表上向後(或向前)按照一個固定數目進行偏移後被替換成密文。通常偏移量爲3。

例如,當偏移量是3的時候,所有的字母A將被替換成D,B變成E,以此類推X將變成A,Y變成B,Z變成C。由此可見,位數就是凱撒密碼加密和解密的密鑰。

在線解密

2.仿射密碼

仿射密碼的加密算法就是一個線性變換,即對任意的明文字符x,對應的密文字符爲 ,其中,a,b∈Z26,且要求gcd(a,26)=1,函數e(x)稱爲仿射加密函數。

加密案例:

設密鑰K= (7, 3), 用仿射密碼加密明文hot。

三個字母對應的數值是7、14和19。分別加密如下:

(7×7 + 3) mod 26 = 52 mod 26 =0

(7×14 + 3) mod 26 = 101 mod 26 =23

(7×19 + 3) mod 26 =136 mod 26 =6

三個密文數值爲0、23和6,對應的密文是AXG。

解密案例:

本例是按照上例來解密的,也就是用仿射密碼解密密文AXG,密鑰k=(7,3)。

三個字母對應的數值是0、23、6。解密如下:

由解密Dk©=k3(c- k2) mod n(其中(k3 ×k1)mod26 = 1);

可知k3×7=1(mod 26)(其實,就是1/mod26),也就是存在整數t,使7×k3+26t=1。(1)

利用輾轉相除法求解k3:

26 = 7 * 3 + 5;(2)(對26作形如:a * b + c,其中 c 就是餘數)

7 = 5 * 1 + 2;(3)(作形如: a = c * m + n ,其中 a ,c 是上一步的, m 是乘數 ,n 是餘數)

5 = 2 * 2 + 1;(一直循環上一步,直到餘數 n = 1)

進行回代:

1 = 5 - 2 * 2

= 5 - (7 - 5 * 1) * 2(第一個2用(3)式來代替,也就是2 = 7 - 5 * 1)

= 3 * 5 - 2 * 7

= 3 * (26 - 7 * 3) - 2 * 7(5用(2)式來代替,也就是5 = 26 - 7 * 3)

= -11 * 7 + 3 * 26(直到不用進行代替,也就是得到只有7和26的表達式)

對比(1)式可知:t = 3 ,k3 = -11;

所以:Dk©=k3(c- k2) mod n <=> Dk©=-11(c- 3) mod 26 .

對於第一位 A :

-11 ( 0 - 3 ) mod 26 = ( -11 * -3 )mod 26 = 7;

對於第二位 X :

-11 ( 23 - 3 ) mod 26 = ( -11 * 20 ) mod 26 = ( -220 ) mod 26 = ( 26 * -9 ) + 14 = 14;

( 用計算器求 (-220) mod 26 ,不同的計算器會有不同的結果,百度的計算器求得就是 14 ,直接百度搜索:(-220) mod 26 就可以了,不能直接在計算器上輸入 -220mod26 ,那樣會得出負數。其實,可以這樣算,算出(-11)mod 26 =15,再計算 (15 * 20)mod26 = 14)

對於第三位 G :

-11 ( 6 - 3 ) mod 26 = ( -11 * 3 )mod 26 = ( -33 )mod 26 = 19;(計算方法如上)

三個明文值爲 7,14,19,對應的明文是HOT,也就是hot。

(後續會有解密代碼)

3.埃特巴什碼(Atbash Cipher)

最後一個字母代表第一個字母,倒數第二個字母代表第二個字母。

在羅馬字母表中,它是這樣出現的:

常文:A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

密文:Z Y X W V U T S R Q P O N M L K J I H G F E D C B A

古典密碼——多表替換

1.playfair密碼(Playfair cipher 或 Playfair square)

Playfair密碼是一種使用一個關鍵詞方格來加密字符對的加密法,1854年由查爾斯·惠斯通(Charles Wheatstone)的英國人發明。

其加密步驟如下:

1.選取一段英文字母,去除重複出現的字母,將剩下字母逐個加入5*5矩陣中,剩下空間由未加入英文字母依a~z順序加入。(q去除,i和j視爲同一字母)。得到密鑰。

2.將要加密明文分爲倆個一組,若組內字母相同,將X或Q加到該組第一個字母后,重新分組。若剩下一個字母,也加入X或Q

3.在每組中,找出倆個字母在矩陣的位置,其規則如下:
(1)若倆個字母不同行也不同列,在矩陣中找出另外倆個字母,使這四個字母成爲一個長方形的四個角
(2)若倆個字母同行,取這倆個字母的右方字母,若字母在最右方,取最左方字母
(3)若倆個字母同列,取這倆個字母的下方字母,若字母在最下方,取最上方字母

新找到的字母就是原本倆個字母加密的結果。

2.棋盤密碼(Polybius方表)

世界上最早的一種密碼產生於公元前兩世紀。是由一位希臘人提出的,人們稱之爲
棋盤密碼,原因爲該密碼將26個字母放在5×5的方格里,i,j放在一個格子裏,具體情
況如下表所示

其特點如下:
(1)密文每兩個數字被編做一組
(2)所有數字均在1~5間浮動

這樣,每個字母就對應了由兩個數構成的字符α β,α是該字母所在行的標號,β是列
標號。如c對應13,s對應43等。如果接收到密文爲

43 15 13 45 42 15 32 15 43 43 11 22 15

則對應的明文即爲secure message。

3.Nihilist 加密法

其步驟如下:

第一步,選取一個關鍵詞已構成Polybius方格,即在5*5矩陣中填寫關鍵詞(去重),然後繼續在其中按順序填寫字母表的其餘字母。

第二步,選取的明文,利用以上的Polynius方格將其轉換爲數字(先行後列)。

4.Hill密碼(希爾密碼)

(1)加密:密文=明文*密鑰矩陣 (注:明文要被分割成與密鑰維數相同的一維行列式)
*(2)解密:明文=密文密鑰矩陣的逆 (注:要求與加密過程相同)

以下爲案例:本人手寫,如有不妥,請原諒(*´_ゝ`)

加密:
在這裏插入圖片描述
解密:
在這裏插入圖片描述

4.維吉尼亞密碼

在凱撒密碼基礎上擴展出來的多表密碼,引入了密鑰,根據密鑰來決定用哪一行的密表來進行替換.

假設明文對應行,祕鑰對應列.我們舉個簡單的例子:
明文: d
祕鑰: c
在表中找到第d行,第c列,則
密文:F

以此類推.

出自百度百科

Autokey Cipher(自動密鑰密碼)

自動密鑰密碼是密碼學中的一種加密算法,與維吉尼亞密碼類似,區別在於密鑰不同。它的密鑰開頭是一個關鍵詞,之後則是明文的重複。

示例

加密解密時使用的表格下面演示的是一種自動密鑰密碼的加密方法。先假設關鍵詞爲QUEENLY,而文本信息爲ATTACK AT DAWN,則自動生成的密鑰爲"QUEENLYATTACKDAWN"。之後再通過維吉尼亞密碼的表格法生成密文:

明文:ATTACK AT DAWN…
密鑰:QUEENL YA TTACK AT DAWN…
密文:QNXEPV YT WTWP…

破譯方法
假設明文爲MEET AT THE FOUNTAIN,關鍵詞爲KILT:

明文:MEETATTHEFOUNTAIN(未知)
密鑰:KILTMEETATTHEFOUN(未知)
密文:WMPMMXXAEYHBRYOCA(已知)
我們嘗試一些常用單詞、雙字母組、三字母組等在密鑰中的可能位置,如THE:

密文:WMP MMX XAE YHB RYO CA
密鑰:THE THE THE THE THE …
明文:DFL TFT ETA FAX YRK …

密文:W MPM MXX AEY HBR YOC A
密鑰:. THE THE THE THE THE .
明文:. TII TQT HXU OUN FHY .

密文:WM PMM XXA EYH BRY OCA
密鑰:… THE THE THE THE THE
明文:… WFI EQW LRD IKU VVW
我們將這些明文片段按出現的可能性排列:

不可能 <-------------------------->最可能
EQW DFL TFT … … … … ETA OUN FAX
由於正確的明文片段同樣也會出現在密鑰中,因此可以將其偏移關鍵詞的長度而得到密鑰片段。同樣地,我們猜測的密鑰片段THE也會出現在明文中。因此,猜測關鍵詞的長度(譬如說3到12之間),我們就能得到明文和密鑰。

嘗試OUN可能得到:

偏移4位:
密文:WMPMMXXAEYHBRYOCA
密鑰:…ETA.THE.OUN
明文:…THE.OUN.AIN

偏移5位:
密文:WMPMMXXAEYHBRYOCA
密鑰:…EQW…THE…OU
明文:…THE…OUN…OG

偏移6位:
密文:WMPMMXXAEYHBRYOCA
密鑰:…TQT…THE…O
明文:…THE…OUN…M
看起來偏移量爲4時的可能性最大(其他的都含有不太可能出現的Q),因此我們再將新得到的ETA偏移4位:

密文:WMPMMXXAEYHBRYOCA
密鑰:…LTM.ETA.THE.OUN
明文:…ETA.THE.OUN.AIN
我們知道了關鍵詞的長度很可能是4位(以LT結尾),且已有了文本的一部分:

M.ETA.THE.OUN.AIN
之後以此爲依據再進行一些猜測,可以驗證如下是真正的明文:

MEETATTHEFOUNTAIN

ADFGVX密碼

ADFGVX密碼是德軍在第一次世界大戰中使用的欄塊密碼。事實上,它是早先一種密碼 ADFGX 的增補版。1918年3月Fritz Nebel上校發明了這種密碼,並提倡使用。它結合了改良過的Polybius方格替代密碼與單行換位密碼。這個密碼以使用於密文當中六個字母 A, D, F, G, V, X命名。ADFGVX 是被法國陸軍中尉 Georges Painvin 所破解的。以古典密碼學的標準來說,此密碼破解的工作是屬於格外困難的,在這期間,Painvin 更因此健康蒙受了嚴重損傷。他破解的方法是依靠於找到多份開頭相同的訊息,這表示說它們是被相同的分解鑰匙和移位鑰匙加密的。

假設我們需要發送明文訊息 “Attack at once”, 用一套祕密混雜的字母表填滿 Polybius 方格,像是這樣:

在這裏插入圖片描述

i 和 l 視爲同個字,使字母數量符合 5 × 5 格。之所以選擇這五個字母,是因爲它們譯成摩斯密碼時不容易混淆,可以降低傳輸錯誤的機率。使用這個方格,找出明文字母在這個方格的位置,再以那個字母所在的欄名稱和列名稱代替這個字母。可將該訊息可以轉換成處理過的分解形式。

在這裏插入圖片描述

下一步,利用一個移位鑰匙加密。假設鑰匙字是"CARGO",將之寫在新格子的第一列。再將上一階段的密碼文一列一列寫進新方格里。

C A R G O


A F A D A

D A F G F

D X A F A

D D F F X

G F X F X

最後,按照鑰匙字字母順序「ACGOR」依次抄下該字下整行訊息,形成新密文。如下:

FAXDF ADDDG DGFFF AFAXX AFAFX

在實際應用中,移位鑰匙字通常有兩打字符那麼長,且分解鑰匙和移位鑰匙都是每天更換的。

ADFGVX

在 1918年 6月,再加入一個字 V 擴充。變成以 6 × 6 格共 36 個字符加密。這使得所有英文字母(不再將 I 和 J 視爲同一個字)以及數字 0 到 9 都可混合使用。這次增改是因爲以原來的加密法發送含有大量數字的簡短信息有問題。

詞頻分析

在線網站

其他(有些不知道歸類到哪,就丟這裏啦~)

1. Escape加密/UnEscape解密

JavaScript unescape() 函數可對通過 escape() 編碼的字符串,找到形式爲 %xx 和 %uxxxx 的字符序列(x 表示十六進制的數字),用 Unicode 字符 \u00xx 和 \uxxxx 替換這樣的字符序列進行解碼。

例如: 世界你好
加密後:%u4E16%u754C%u4F60%u597D

在線解碼

2. eval(function(p,a,c,k,e,d)系列解密javascript程序

我也沒弄懂這到底是什麼東西,所以先貼爲敬.

解碼鏈接

3.VBScript

例如:
#@^TgAAAA==’[6*liLa6++p’aXvfiLaa6i[[avWi[[a*p[[6*!I’[6cp’aXvXILa6fp[:6+Wp[:XvWi[[6+XivRIAAA==^#@
解密後:
Encode@decode
在線解密

4.豬圈密碼

以格子爲基礎的簡單替代式密碼,格子如下:

若使用範例的關鍵字,則明文"X marks the spot"的加密結果將呈現如下:

5.手機鍵盤加密

利用九鍵鍵盤進行加密,其特徵爲第一個字母不能爲1,第二個字母不能超過4

6.QWE密碼

QWE密碼 :指的是QWE格式鍵盤佈局按 從左往右QWERTYUIOP ASDFGHJKL ZXCVBNM排列順序一一對照英文字母表,如下:

QWE加密表:

┃a ┃b ┃c┃d ┃e ┃f ┃g ┃h┃i ┃ j┃k ┃l ┃m┃n┃o ┃p ┃q┃r┃s┃t ┃u ┃v┃w┃x ┃y ┃z ┃

┃Q┃W┃E┃R┃T ┃Y┃U┃I ┃O┃P┃A┃S┃D┃F┃G┃H┃J┃K┃L┃Z┃X┃C┃V┃B┃N┃M┃

QWE解密表:

┃A┃B┃C┃D┃E┃F┃G┃H┃I ┃J┃K┃L┃M┃N┃O┃P┃Q┃R┃S┃T┃U┃V┃W┃X┃Y┃Z┃

┃k ┃x┃v ┃m┃c┃n┃o ┃p┃h┃q┃r┃s ┃z ┃y ┃i ┃j ┃a ┃d┃l ┃e ┃g┃w┃b ┃u┃f ┃t ┃

7.曲路密碼

是一種換位密碼,需要事先雙方約定密鑰(曲路路徑)。

明文:The quick brown fox jumps over the lazy dog
填入5行7列表(事先約定好的行列數)

加密的迴路線(事先約定好的行列數)

密文:gesfc inpho dtmwu qoufy…

8.盲文

1.數字盲文
在這裏插入圖片描述
2.字母盲文:
在這裏插入圖片描述

9.當鋪密碼

當鋪密碼 就是一種將中文和數字進行轉化的密碼,算法相當簡單:當前漢字有多少筆畫出頭,就是轉化成數字幾。例如:

王夫 井工 夫口 由中人 井中 夫夫 由中大:67 84 70 123 82 77 125
在這裏插入圖片描述

10.Brainfuck(BF)

Brainfuck,是一種極小化的計算機語言,它是由Urban Müller在1993年創建的。由於fuck在英語中是髒話,這種語言有時被稱爲brainfck或brainf**,甚至被簡稱爲BF。
在這裏插入圖片描述
在線解密

11.Ook!

Ook! 與Brainfuck類似, 但用單詞“Ook!”,“Ook.” 和“Ook?”代替。
在這裏插入圖片描述
在線解密

12.Piet

Piet是一種可視化的編程語言,其代碼本身就是可視化的,像個位圖。
在這裏插入圖片描述

13種荒謬的編程語言

摩斯電碼

太有名了,沒什麼可補充的
在線解密

現代密碼學——Hash

MD5(哈希算法)

MD5即Message-Digest Algorithm 5(信息-摘要算法5),用於確保信息傳輸完整一致。是計算機廣泛使用的雜湊算法之一(又譯摘要算法、哈希算法),主流編程語言普遍已有MD5實現。將數據(如漢字)運算爲另一固定長度值,是雜湊算法的基礎原理,MD5的前身有MD2、MD3和MD4。

MD5算法具有以下特點:

1、壓縮性:任意長度的數據,算出的MD5值長度都是固定的。對任意長度的明文均產生128位的消息摘要。

2、容易計算:從原數據計算出MD5值很容易。

3、抗修改性:對原數據進行任何改動,哪怕只修改1個字節,所得到的MD5值都有很大區別。

4、強抗碰撞:已知原數據和其MD5值,想找到一個具有相同MD5值的數據(即僞造數據)是非常困難的。

特徵:(1)長度固定
(2)只可能小寫和數字

例: 123456
MD5 e10adc3949ba59abbe56e057f20f883e
具體算法過程,表示沒大看懂,在此不做贅述

MD5裏的salt值:
在密碼學中,是指通過在密碼任意固定位置插入特定的字符串,讓散列後的結果和使用原始密碼的散列結果不相符,這種過程稱之爲“加鹽”。

例如:

MD5(‘123’ + ‘1ck12b13k1jmjxrg1h0129h2lj’) = ‘6c22ef52be70e11b6f3bcf0f672c96ce’
MD5(‘456’ + ‘1h029kh2lj11jmjxrg13k1c12b’) = ‘7128f587d88d6686974d6ef57c193628’

在線解密

現代密碼學——非對稱密碼體系

1.RSA

RSA公鑰加密算法是1977年由羅納德·李維斯特(Ron Rivest)、阿迪·薩莫爾(Adi Shamir)和倫納德·阿德曼(Leonard Adleman)一起提出的。1987年7月首次在美國公佈,當時他們三人都在麻省理工學院工作實習。RSA就是他們三人姓氏開頭字母拼在一起組成的。

RSA是目前最有影響力和最常用的公鑰加密算法,它能夠抵抗到目前爲止已知的絕大多數密碼攻擊,已被ISO推薦爲公鑰數據加密標準。

今天只有短的RSA鑰匙纔可能被強力方式解破。到2008年爲止,世界上還沒有任何可靠的攻擊RSA算法的方式。只要其鑰匙的長度足夠長,用RSA加密的信息實際上是不能被解破的。目前普遍認爲,***模式n至少應該取1024位,最好是2048位。***但在分佈式計算和量子計算機理論日趨成熟的今天,RSA加密安全性受到了挑戰和質疑。

RSA算法基於一個十分簡單的數論事實:將兩個大質數相乘十分容易,但是想要對其乘積進行因式分解卻極其困難,因此可以將乘積公開作爲加密密鑰。

甲方發送數據給乙方。
在這裏插入圖片描述
已方發送數據給甲方。
在這裏插入圖片描述
RSA算法舉例:
在這裏插入圖片描述

常用解密工具:
RSAtool
鏈接:https://pan.baidu.com/s/19DgBYhnWyN3tYTm55uXfqQ
提取碼:dt1k
複製這段內容後打開百度網盤手機App,操作更方便哦

RSA公鑰在線加密解密
RSA私鑰在線加密解密

2.DSA(Digital Signature Algorithm)

DSA是Schnorr和ElGamal簽名算法的變種,被美國NIST作爲DSfS(DigitalSignature Standard)。它是一種公開密鑰算法,不能用作加密,只用作數字簽名。DSA使用公開密鑰,爲接受者驗證數據的完整性和數據發送者的身份。它也可用於由第三方去確定簽名和所籤數據的真實性。
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
DSA依賴於整數有限域離散對數難題。素數p必須足夠大,且p-1至少包含一個大素數因子以抵抗 Pohlig &Hellman算法的攻擊。M一般都應採用消息的HASH值。DSA的安全性主要依賴於p和g,若選取不當則簽名容易僞造,應保證g對於p-1的大素數因子不可約。DSA的一個重要特點是兩個素數公開,這樣,當使用別人的p和q時,即使不知道私鑰,你也能確認它們是否是隨機產生。

DSA輔助工具:
鏈接:https://pan.baidu.com/s/10SIwLY-csyQOZNpr8FWF0g
提取碼:t5xr
複製這段內容後打開百度網盤手機App,操作更方便哦

ECC(Elliptic Curves Cryptography,橢圓曲線密碼編碼學)

橢圓加密算法(ECC)是一種公鑰加密體制,最初由Koblitz和Miller兩人於1985年提出,其數學基礎是利用橢圓曲線上的有理點構成Abel加法羣上橢圓離散對數的計算困難性。公鑰密碼體制根據其所依據的難題一般分爲三類:大整數分解問題類、離散對數問題類、橢圓曲線類。有時也把橢圓曲線類歸爲離散對數類。
ECC加密算法詳解,看不懂。。。。
ECC輔助解密工具:
鏈接:https://pan.baidu.com/s/1C70ig18FLEEqphCldnDqbg
提取碼:1twt
複製這段內容後打開百度網盤手機App,操作更方便哦

serpent(蛇)加密/解密

原理沒看懂,貼博客:
添加鏈接描述
在線解密:

現代密碼學——對稱密碼體系

對稱加密又分爲分組加密和序列密碼。
分組密碼,也叫塊加密(block cyphers),一次加密明文中的一個塊。是將明文按一定的位長分組,明文組經過加密運算得到密文組,密文組經過解密運算(加密運算的逆運算),還原成明文組。
序列密碼,也叫流加密(stream cyphers),一次加密明文中的一個位。是指利用少量的密鑰(制亂元素)通過某種複雜的運算(密碼算法)產生大量的僞隨機位流,用於對明文位流的加密。
解密是指用同樣的密鑰和密碼算法及與加密相同的僞隨機位流,用以還原明文位流。

分組加密算法中,有ECB,CBC,CFB,OFB這幾種加密模式。

AES(Advanced Encryption Standard)

在密碼學中又稱Rijndael加密法,是美國聯邦政府採用的一種區塊加密標準。這個標準用來替代原先的DES,已經被多方分析且廣爲全世界所使用。經過五年的甄選流程,高級加密標準由美國國家標準與技術研究院(NIST)於2001年11月26日發佈於FIPS PUB 197,並在2002年5月26日成爲有效的標準。2006年,高級加密標準已然成爲對稱密鑰加密中最流行的算法之一。

aes密文包括字母 數字 + = /等
AES詳解
AES在線加密解密

1.CBC(Cipher Block Chaining)/密文分組鏈接方式

DES CBC(密文分組鏈接方式)有點麻煩,它的實現機制使加密的各段數據之間有了聯繫。其實現的機理如下:

加密步驟如下:

(1)首先將數據按照8個字節一組進行分組得到D1D2…Dn(若數據不是8的整數倍,用指定的PADDING數據補位)

(2)第一組數據D1與初始化向量I異或後的結果進行DES加密得到第一組密文C1(初始化向量I爲全零)

(3)第二組數據D2與第一組的加密結果C1異或以後的結果進行DES加密,得到第二組密文C2

(4)之後的數據以此類推,得到Cn

(5)按順序連爲C1C2C3…Cn即爲加密結果。
解密是加密的逆過程,步驟如下:

1)首先將數據按照8個字節一組進行分組得到C1C2C3…Cn

2)將第一組數據進行解密後與初始化向量I進行異或得到第一組明文D1(注意:一定是先解密再異或)

3)將第二組數據C2進行解密後與第一組密文數據進行異或得到第二組數據D2

4)之後依此類推,得到Dn

5)按順序連爲D1D2D3…Dn即爲解密結果。

這裏注意一點,解密的結果並不一定是我們原來的加密數據,可能還含有你補得位,一定要把補位去掉纔是你的原來的數據。

特點:

  1. 不容易主動攻擊,安全性好於ECB,適合傳輸長度長的報文,是SSL、IPSec的標準。
    each ciphertext block depends on all message blocks/每個密文塊依賴於所有的信息塊
    thus a change in the message affects all ciphertext blocks/明文消息中一個改變會影響所有密文塊
  2. need Initial Vector (IV) known to sender & receiver/發送方和接收方都需要知道初始化向量
    3.加密過程是串行的,無法被並行化(在解密時,從兩個鄰接的密文塊中即可得到一個平文塊。因此,解密過程可以被並行化)。

2.CFB(Cipher Feedback)/ 密文反饋模式

密文反饋模式類似於CBC,可以將塊密碼變爲自同步的流密碼;工作過程亦非常相似,CFB的解密過程幾乎就是顛倒的CBC的加密過程:
需要使用一個與塊的大小相同的移位寄存器,並用IV將寄存器初始化。然後,將寄存器內容使用塊密碼加密,然後將結果的最高x位與平文的x進行異或,以產生密文的x位。下一步將生成的x位密文移入寄存器中,並對下面的x位平文重複這一過程。解密過程與加密過程相似,以IV開始,對寄存器加密,將結果的高x與密文異或,產生x位平文,再將密文的下面x位移入寄存器。
與CBC相似,平文的改變會影響接下來所有的密文,因此加密過程不能並行化;而同樣的,與CBC類似,解密過程是可以並行化的。

3.ECB(Electronic Code Book)/電碼本模式

DES ECB(電子密本方式)其實非常簡單,就是將數據按照8個字節一段進行DES加密或解密得到一段8個字節的密文或者明文,最後一段不足8個字節,按照需求補足8個字節進行計算,之後按照順序將計算所得的數據連在一起即可,各段數據之間互不影響。

特點:

1.簡單,有利於並行計算,誤差不會被傳送;
2.不能隱藏明文的模式;
repetitions in message may show in cipher text/在密文中出現明文消息的重複
3.可能對明文進行主動攻擊;
加密消息塊相互獨立成爲被攻擊的弱點/weakness due to encrypted message blocks being independent

4.OFB (Output Feedback)/輸出反饋模式

輸出反饋模式可以將塊密碼變成同步的流密碼。它產生密鑰流的塊,然後將其與平文塊進行異或,得到密文。與其它流密碼一樣,密文中一個位的翻轉會使平文中同樣位置的位也產生翻轉。這種特性使得許多錯誤校正碼,例如奇偶校驗位,即使在加密前計算而在加密後進行校驗也可以得出正確結果。
每個使用OFB的輸出塊與其前面所有的輸出塊相關,因此不能並行化處理。然而,由於平文和密文只在最終的異或過程中使用,因此可以事先對IV進行加密,最後並行的將平文或密文進行並行的異或處理。
可以利用輸入全0的CBC模式產生OFB模式的密鑰流。這種方法十分實用,因爲可以利用快速的CBC硬件實現來加速OFB模式的加密過程。

DES

DES算法爲密碼體制中的對稱密碼體制,又被稱爲美國數據加密標準,是1972年美國IBM公司研製的對稱密碼體制加密算法。 明文按64位進行分組,密鑰長64位,密鑰事實上是56位參與DES運算(第8、16、24、32、40、48、56、64位是校驗位, 使得每個密鑰都有奇數個1)分組後的明文組和56位的密鑰按位替代或交換的方法形成密文組的加密方法。
視頻詳解(力推,非常清晰)
文字詳解
DES在線解密
DES在線解密

TEA(Tiny Encryption Algorithm)

TEA算法由劍橋大學計算機實驗室的David Wheeler和Roger Needham於1994年發明。它是一種分組密碼算法,其明文密文塊爲64比特,密鑰長度爲128比特。TEA算法利用不斷增加的Delta(黃金分割率)值作爲變化,使得每輪的加密是不同,該加密算法的迭代次數可以改變,建議的迭代次數爲32輪。
TEA加密算法詳解

RC4/5

RC4算法詳解
RC5算法詳解

特此聲明:以上摘自 CSDN、博客園、簡書、微博、百度百科等。

                                </div>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章