導航:首頁 > 文檔加密 > aes採用相同的加密和解密演算法

aes採用相同的加密和解密演算法

發布時間:2024-04-12 23:54:21

① 密碼學基礎(二):對稱加密

加密和解密使用相同的秘鑰稱為對稱加密。

DES:已經淘汰
3DES:相對於DES有所加強,但是仍然存在較大風險
AES:全新的對稱加密演算法

特點決定使用場景,對稱加密擁有如下特點:

速度快,可用於頻率很高的加密場景。

使用同一個秘鑰進行加密和解密。

可選按照128、192、256位為一組的加密方式,加密後的輸出值為所選分組位數的倍數。密鑰的長度不同,推薦加密輪數也不同,加密強度也更強。

例如:
AES加密結果的長度由原字元串長度決定:一個字元為1byte=4bit,一個字元串為n+1byte,因為最後一位為'',所以當字元串長度小於等於15時,AES128得到的16進制結果為32位,也就是32 4=128byte,當長度超過15時,就是64位為128 2byte。

因為對稱加密速度快的特點,對稱加密被廣泛運用在各種加密場所中。但是因為其需要傳遞秘鑰,一旦秘鑰被截獲或者泄露,其加密就會玩完全破解,所以AES一般和RSA一起使用。

因為RSA不用傳遞秘鑰,加密速度慢,所以一般使用RSA加密AES中鎖使用的秘鑰後,再傳遞秘鑰,保證秘鑰的安全。秘鑰安全傳遞成功後,一直使用AES對會話中的信息進行加密,以此來解決AES和RSA的缺點並完美發揮兩者的優點,其中相對經典的例子就是HTTPS加密,後文會專門研究。

本文針對ECB模式下的AES演算法進行大概講解,針對每一步的詳細演算法不再該文討論范圍內。

128位的明文被分成16個位元組的明文矩陣,然後將明文矩陣轉化成狀態矩陣,以「abcdefghijklmnop」的明文為例:

同樣的,128位密鑰被分成16組的狀態矩陣。與明文不同的是,密文會以列為單位,生成最初的4x8x4=128的秘鑰,也就是一個組中有4個元素,每個元素由每列中的4個秘鑰疊加而成,其中矩陣中的每個秘鑰為1個位元組也就是8位。

生成初始的w[0]、w[1]、w[2]、w[3]原始密鑰之後,通過密鑰編排函數,該密鑰矩陣被擴展成一個44個組成的序列W[0],W[1], … ,W[43]。該序列的前4個元素W[0],W[1],W[2],W[3]是原始密鑰,用於加密運算中的初始密鑰加,後面40個字分為10組,每組4個32位的欄位組成,總共為128位,分別用於10輪加密運算中的輪密鑰加密,如下圖所示:

之所以把這一步單獨提出來,是因為ECB和CBC模式中主要的區別就在這一步。

ECB模式中,初始秘鑰擴展後生成秘鑰組後(w0-w43),明文根據當前輪數取出w[i,i+3]進行加密操作。

CBC模式中,則使用前一輪的密文(明文加密之後的值)和當前的明文進行異或操作之後再進行加密操作。如圖所示:

根據不同位數分組,官方推薦的加密輪數:

輪操作加密的第1輪到第9輪的輪函數一樣,包括4個操作:位元組代換、行位移、列混合和輪密鑰加。最後一輪迭代不執行列混合。

當第一組加密完成時,後面的組循環進行加密操作知道所有的組都完成加密操作。

一般會將結果轉化成base64位,此時在iOS中應該使用base64編碼的方式進行解碼操作,而不是UTF-8。

base64是一種編碼方式,常用語傳輸8bit位元組碼。其編碼原理如下所示:

將原數據按照3個位元組取為一組,即為3x8=24位

將3x8=24的數據分為4x6=24的數據,也就是分為了4組

將4個組中的數據分別在高位補上2個0,也就成了8x4=32,所以原數據增大了三分之一。

根據base64編碼表對數據進行轉換,如果要編碼的二進制數據不是3的倍數,最後會剩下1個或2個位元組怎麼辦,Base64用x00位元組在末尾補足後,再在編碼的末尾加上1個或2個=號,表示補了多少位元組,解碼的時候,會自動去掉。

舉個栗子:Man最後的結果就是TWFu。

計算機中所有的數據都是以0和1的二進制來存儲,而所有的文字都是通過ascii表轉化而來進而顯示成對應的語言。但是ascii表中存在許多不可見字元,這些不可見字元在數據傳輸時,有可能經過不同硬體上各種類型的路由,在轉義時容易發生錯誤,所以規定了64個可見字元(a-z、A-Z、0-9、+、/),通過base64轉碼之後,所有的二進制數據都是可見的。

ECB和CBC是兩種加密工作模式。其相同點都是在開始輪加密之前,將明文和密文按照128/192/256進行分組。以128位為例,明文和密文都分為16組,每組1個位元組為8位。

ECB工作模式中,每一組的明文和密文相互獨立,每一組的明文通過對應該組的密文加密後生成密文,不影響其他組。

CBC工作模式中,後一組的明文在加密之前先使用前一組的密文進行異或運算後再和對應該組的密文進行加密操作生成密文。

為簡單的分組加密。將明文和密文分成若干組後,使用密文對明文進行加密生成密文
CBC

加密:

解密:

② AES加密演算法怎樣進行改進

AES演算法基於排列和置換運算。排列是對數據重新進行安排,置換是將一個數據單元替換為另一個。AES使用幾種不同的方法來執行排列和置換運算。AES是一個迭代的、對稱密鑰分組的密碼,它可以使用128、192和256位密鑰,並且用128位(16位元組)分組加密和解密數據。與公共密鑰加密使用密鑰對不同,對稱密鑰密碼使用相同的密鑰加密和解密數據。通過分組密碼返回的加密數據的位數與輸入數據相同。迭代加密使用一個循環結構,在該循環中重復置換和替換輸入數據。密碼學簡介據記載,公元前400年,古希臘人發明了置換密碼。1881年世界上的第一個電話保密專利出現。在第二次世界大戰期間,德國軍方啟用「恩尼格瑪」密碼機,密碼學在戰爭中起著非常重要的作用。
AES加密演算法主要步驟
1.1 AES演算法整體描述
l 給定一個明文x,將State初始化為x,並進行AddRoundKey操作,將RoundKey與State異或。
l 對前Nr-1輪中的每一輪,用S盒對進行一次代換操作,稱為SubBytes;對State做一置換ShiftRows;再對State做一次操作MixColumns;然後進行AddRoundKey操作。
l 依次進行SubBytes、ShiftRows和AddRoundKey操作。
l 將State定義為密文y。
1.2 偽代碼
Cipher(byte in[4*Nb], byte out[4*Nb], word w[Nb*(Nr+1)])
begin
byte state[4,Nb]
state = in
AddRoundKey(state, w[0, Nb-1])
for round = 1 step 1 to Nr-1
SubBytes(state)
ShiftRows(state)
MixColumns(state)
AddRoundKey(state, w[round*Nb, (round+1)*Nb-1])
end for
SubBytes(state)
ShiftRows(state)
AddRoundKey(state, w[Nr*Nb, (Nr+1)*Nb-1])
out = state
end
2 KeyExpansion()實現
2.1要求
將128 bit的密鑰擴展至加密過程中的9輪循環,再上初始及最後2輪,需構造11輪密鑰。每一輪密鑰由4個字組成。每個字由4個byte組成。
2.2 演算法設計
輸入:byte[] key, byte[] w //key為密鑰 w為擴展的密鑰
輸出:byte[] w //擴展密鑰 長度為4 * 4 * 11
處理:
1)建立一個4 byte的一維數組,存放一個字。Byte[] temp;
2)將密鑰key[0..15]送至w[0..15];//已賦值4個字給w。
3) for I = 4 to 43
//以下每次處理一個字(32 bit)
temp = w[I-1];
if (I = 0 mod 4) //處理一個字 then
for j = 1 to 4 //字的4 byte處理
在此循環中取temp數組下標的次序為1,2,3,0 //RotWord 操作
如果是字的首byte,取Rcon常數Rcon(I/4);
temp[j] = Sbox(temp[ (j + 1) /4]^Rcon常數
end for
temp = SubWord(RotWord(temp))⊕Rcon[i/4]
end if
w[I] = w[I-4]⊕temp;
end for
4) 輸出w
3多項式乘法mod GF(28)運算
3.1要求
將兩個byte在有限域GF(28)按多項式乘法,並mod 不可約多項式m(x)=x8+x4+x3+x+1。
3.2 演算法設計
輸入:byte a ,byte b
輸出:byte r
數學基礎:
GF(28)有限域性質:兩個元素的加法與兩個位元組按位模2加是一致的;乘法滿足結合律;
考慮多項式中的一項aixi(i∈0-7),用一次x乘以多項式:
b(x) = b7x7 + b6x6 + b5x5 + b4x4 + b3x3 + b2x2 + b1x + b0,
得到
b7x8 + b6x7 + b5x6 + b4x5 + b3x4 + b2x3 + b1x2 + b0x (式1)
將結果模m(x)求余得到x*b(x)。
如果b7 = 0,則式1就是x*b(x)。
如果b7 不等於0,則必須從式1中減去m(x)後結果為x*b(x)。用x乘一個多項式簡稱x乘。
由此得出,aixi 乘以b(x),可以作i次x乘。x(十六進製表示為0x02)乘可以用位元組內左移一位和緊接著的一個與0x1b的按位模2加來實現,該運算暫記為xtime()。X的更高次的乘法可以通過重復應用xtime()來實現。通過將中間結果相加,任意乘法都可以利用xtime()來實現。例如:
57 * 13 = fe ,這是因為:
57 * 02 = xtime(57) = ae
57 * 04 = xtime(ae) = 47
57 * 08 = xtime(47) = 8e
57 * 10 = xtime(8e) = 07
所以
57 * 13 = 57 * ( 01⊕ 02 ⊕10 )
= 57⊕ ae⊕ 07
= fe

4 Sbox生成
4.1要求
一個位元組byte看作為一個在有限域GF(28)的多項式,求出它關於模m(x)的乘法逆,之後將該乘法逆在GF(2)上作仿射變換。
4.2 演算法設計
輸入:byte a
輸出:byte[] S
數學邏輯:
由有限域GF(28)性質。某個生成元(也是本原元)a,其a^(28-1) ≡ 1 mod m(x)。或a255 ≡ 1 mod m(x)。另外,a的從1到28-1的冪的值是構成了有限域GF(28)。
由乘法逆的性質b * b -1 ≡ 1。求乘法逆可簡化如下
設 x = am ,設y是x的乘法逆,則y = a255-m
處理:
建立三個一組數組,分別為:byte S[255],byte L[255],byte E[255]。
取本原元為a = 0x03,
將a的0,1,2…255次方mod m(x)分另送至數組L中。a的運算參考前面的多項式乘法運算。如下偽碼:
For i = 0 to 255
L[i] = ai (式2)
End for
為方便計算乘法逆的指數,數組E存放ai的冪指數i。將式2中ai值為數組E的下標,而將ai在數組L中的下標i作為數組E中對應的值。對應(式2)每一項有E[ai] = i。
由上面兩個數組L,E,可得到GF(28)域中的任一byte的乘法逆。
設位元組c它由ai生成的。其中a是GF(28)域中的生成元。欲求c的乘法逆。只需要找到a255-i即可。在數組E中可以由c查出生成元a的冪指數i。c-1的冪指數255-i。所以c-1 = L[255-i]。
對每一個位元組byte根據以上內容得到乘法逆,作仿射變換得到數組S。即為Sbox

③ 2019-06-10 對稱加密 和非對稱加密

一、對稱加密

AES加密

AES加密是一種高級加密標准,是一種區塊加密標准。它是一個對稱密碼,就是說加密和解密用相同的密鑰。WPA/WPA2經常用的加密方式就是AES加密演算法。

二、非對稱加密

RSA加密演算法是一種非對稱加密演算法,非對稱加密演算法需要兩個密鑰:公共密鑰和私有密鑰。公鑰和私鑰是配對的,用公鑰加密的數據只有配對的私鑰才能解密。

RSA對加密數據的長度有限制,一般為密鑰的長度值-11,要加密較長的數據,可以採用數據截取的方法,分段加密。

使用場景:

文件或數據在本地使用公鑰或私鑰加密,加密後的數據傳送到伺服器,伺服器使用同一套密鑰中的私鑰或者公鑰進行解密。

一、Https是什麼?

1.HTTPS概念

HTTPS並不是一個單獨的協議,而是對工作在一加密連接(SSL/TLS)上的常規HTTP協議。通過在TCP和HTTP之間加入TLS來加密。

2.SSL/TLS協議

SSL協議,是一種安全傳輸的協議,TLS是SSL v3.0的升級版。

4.HTTPS傳輸速度

1)通信慢

2)SSL必須進行加密處理,比HTTP消耗更多資源

二、TLS/SSL握手

1.密碼學原理

1)對稱加密

加密數據用的秘鑰和解密數據用的密鑰是一樣的。

2)不對稱加密

私有密鑰:一方保管

共有密鑰:雙方公有

RSA演算法。

2.數字證書

1)就是互聯網通訊中標志通訊各方身份信息的一串數字,也是一個文件。

2)為什麼有數字證書?

3)數字證書的頒發過程?

3.SSL與TLS握手的過程?

使用非對稱加密,隨機數不能被隨便破解

Https雙向認證的流程:

a. 客戶端向服務端發送SSL版本等信息

b. 服務端給客戶端返回SSL版本,同時也返回伺服器端的證書

c.  客戶端使用服務的返回的信息驗證伺服器的合法性,

a) 包括:證書是否過期,發型伺服器證書的CA是否可靠,返回的公鑰能正確解開返回證書中的數字簽名,伺服器證書上帝域名是否和伺服器的實際域名想匹配

b) 驗證通過後,將進行通信,否則終止通信

d. 客戶端將自己的證書和公鑰發送給服務端

e. 驗證客戶端的證書,通過驗證後,會獲得客戶端的公鑰

f. 客戶端向服務端發送自己可以支持的對稱加密方案給服務端,讓服務端進行選擇

g. 服務端在客戶端提供的加密方案中選擇加密程度高的加密方式

h. 將加密方案通過使用之前獲取到的公鑰進行加密,返回給客戶端

i. 客戶端收到服務端返回的加密方案後,使用自己的私鑰進行解密,獲取具體的加密方式,最後,產生加密方式的隨機碼,用作過程中的密鑰,使用之前從客戶端證書中獲取到的公鑰進行加密後,發送嘿服務端

j. 服務端收到客戶端發來的消息後,使用私鑰對加密信息進行加密,獲得對稱加密的密鑰

k. 對稱加密,確保通信安全

總結:https實際上就是在TCP層與http層之間加入了SSL/TLS來為上層的安全保駕護航,主要用到了對稱加密,非對稱加密,證書等技術進行客戶端與伺服器的數據加密傳輸,最終達到保證整個通信的安全性。

④ des和aes 加解密演算法具體步驟有例子最好

隨著計算機網路和計算機通訊技術的發展,計算機密碼學得到前所未有的重視並迅速普及和發展起來。由於密碼系統的各種性能主要由密碼演算法所決定,不同的演算法決定了不同的密碼體制,而不同的密碼體制又有著不同的優缺點:有的密碼演算法高速簡便,但加解密密鑰相同,密鑰管理困難;有的密碼演算法密鑰管理方便安全,但計算開銷大、處理速度慢。基於此,本文針對兩種典型的密碼演算法DES和RSA的特點進行討論分析,並提出一種以這兩種密碼體制為基礎的混合密碼系統,來實現優勢互補。
1 密碼系統簡介
1.1 密碼系統分類
密碼系統從原理上可分為兩大類,即單密鑰系統和雙密鑰系統。單密鑰系統又稱為對稱密碼系統,其加密密鑰和解密密鑰或者相同,或者實質上相同,即易於從一個密鑰得出另一個,如圖1所示。雙密鑰系統又稱為公開密鑰密碼系統,它有兩個密鑰,一個是公開的,用K1表示,誰都可以使用;另一個是私人密鑰,用K2表示,只由採用此系統的人掌握。從公開的密鑰推不出私人密鑰,如圖2所示。

1.2 兩種密碼系統分析
1.2.1 對稱密碼系統(單鑰密碼系統)
對稱密碼系統中加密和解密均採用同一把密鑰,而且通信雙方必須都要獲得這把密鑰。這就帶來了一系列問題。首先,密鑰本身的發送就存在著風險,如果在發送中丟失,接受方就不可能重新得到密文的內容;其次,多人通信時密鑰的組合的數量會出現爆炸性的膨脹,N個人兩兩通信,需要N*(N-1)/2把密鑰,增加了分發密鑰的代價和難度;最後,由於通信雙方必須事先統一密鑰,才能發送保密的信息,這樣,陌生人之間就無法發送密文了。
1.2.2 公開密鑰密碼系統(雙鑰密碼系統)
公開密鑰密碼系統中,收信人生成兩把數學上關聯但又不同的公鑰和私鑰,私鑰自己保存,把公鑰公布出去,發信人使用收信人的公鑰對通信文件進行加密,收信人收到密文後用私鑰解密。公開密鑰密碼系統的優勢在於,首先,用戶可以把用於加密的鑰匙公開地發給任何人,並且除了持有私有密鑰的收信人之外,無人能解開密文;其次,用戶可以把公開鑰匙發表或刊登出來,使得陌生人之間可以互發保密的通信;最後,公開密鑰密碼系統提供了數字簽字的公開鑒定系統,而這是對稱密碼系統不具備的。
1.3 典型演算法
對稱密碼系統的演算法有DES,AES,RC系列,DEA等,公開密鑰密碼系統的演算法有RSA,Diffie-Hellman, Merkle-Hellman等。
2 DES演算法
DES (Data Encryption Standard,數據加密標准)是一個分組加密演算法,它以64 bit位(8 byte)為分組對數據加密,其中有8 bit奇偶校驗,有效密鑰長度為56 bit。64 位一組的明文從演算法的一端輸入,64 位的密文從另一端輸出。DES演算法的加密和解密用的是同一演算法,它的安全性依賴於所用的密鑰。DES 對64位的明文分組進行操作,通過一個初始置換,將明文分組成左半部分和右半部分,各32位長。然後進行16輪完全相同的運算,這些運算被稱為函數f,在運算過程中數據與密鑰結合。經過16輪後,左、右半部分合在一起經過一個末置換(初始置換的逆置換),完成演算法。在每一輪中,密鑰位移位,然後再從密鑰的56位中選出48位。通過一個擴展置換將數據的右半部分擴展成48位,並通過一個異或操作與48位密鑰結合,通過8個s盒將這48位替代成新的32位數據,再將其置換一次。這些運算構成了函數f。然後,通過另一個異或運算,函數f輸出與左半部分結合,其結果即成為新的右半部分, 原來的右半部分成為新的左半部分。將該操作重復16次,實現DES的16輪運算。
3 RSA演算法
RSA演算法使用兩個密鑰,一個公共密鑰,一個私有密鑰。如用其中一個加密,則可用另一個解密。密鑰長度從40到2048 bit可變。加密時把明文分成塊,塊的大小可變,但不能超過密鑰的長度,RSA演算法把每一塊明文轉化為與密鑰長度相同的密文塊。密鑰越長,加密效果越好,但加密解密的開銷也大,所以要在安全與性能之間折衷考慮,一般64位是較合適的。RSA演算法利用了陷門單向函數的一種可逆模指數運算,描述如下:(1)選擇兩個大素數p和q;(2)計算乘積n=pq和φ(n)=(p-1)(q-1);(3)選擇大於1小於φ(n)的隨機整數e,使得
gcd(e,φ(n))=1;(4)計算d使得de=1modφ(n);(5)對每一個密鑰k=(n,p,q,d,e),定義加密變換為Ek(x)=xemodn,解密變換為Dk(y)=ydmodn,這里x,y∈Zn;(6)以{e,n}為公開密鑰,{p,q,d}為私有密鑰。
4 基於DES和RSA的混合密碼系統
4.1 概述
混合密碼系統充分利用了公鑰密碼和對稱密碼演算法的優點,克服其缺點,解決了每次傳送更新密鑰的問題。發送者自動生成對稱密鑰,用對稱密鑰按照DES演算法加密發送的信息,將生成的密文連同用接受方的公鑰按照RSA演算法加密後的對稱密鑰一起傳送出去。收信者用其密鑰按照RSA演算法解密被加密的密鑰來得到對稱密鑰,並用它來按照DES演算法解密密文。
4.2 具體實現步驟
(1)發信方選擇對稱密鑰K(一般為64位,目前可以達到192位)
(2)發信方加密消息:對明文按64位分組進行操作,通過一個初始置換,將明文分組成左半部分和右半部分。然後進行16輪完全相同的運算,最後,左、右半部分合在一起經過一個末置換(初始置換的逆置換),完成演算法。在每一輪中,密鑰位移位,然後再從密鑰的56位中選出48位。通過一個擴展置換將數據的右半部分擴展成48位,並通過一個異或操作與48位密鑰結合,通過8個S盒將這48位替代成新的32位數據,再將其置換一次。然後通過另一個異或運算,輸出結果與左半部分結合,其結果即成為新的右半部分,原來的右半部分成為新的左半部分。如圖3所示。

(3)收信方產生兩個足夠大的強質數p、q,計算n=p×q和z=(p-1)×(q-1),然後再選取一個與z互素的奇數e,從這個e值找出另一個值d,使之滿足e×d=1 mod (z)條件。以兩組數(n,e) 和 (n,d)分別作為公鑰和私鑰。收信方將公鑰對外公開,從而收信方可以利用收信方的公鑰對 (1)中產生的對稱密鑰的每一位x進行加密變換Ek(x)=xemodn;
(4)發信方將步驟(2)和(3)中得到的消息的密文和對稱密鑰的密文一起發送給收信方;
(5)收信方用(3)中得到的私鑰來對對稱密鑰的每一位y進行解密變換Dk(y)=ydmodn,從而得到(1)中的K;
(6)收信方用對稱密鑰K和DES演算法的逆步驟來對消息進行解密,具體步驟和(2)中恰好相反,也是有16輪迭代。
(7)既可以由收信方保留對稱密鑰K來進行下一次數據通信,也可以由收信方產生新的對稱密鑰,從而使K作廢。
4.3 兩點說明
4.3.1 用公鑰演算法加密密鑰
在混合密碼系統中,公開密鑰演算法不用來加密消息,而用來加密密鑰,這樣做有兩個理由:第一,公鑰演算法比對稱演算法慢,對稱演算法一般比公鑰演算法快一千倍。計算機在大約15年後運行公開密鑰密碼演算法的速度才能比得上現在計算機運行對稱密碼的速度。並且,隨著帶寬需求的增加,比公開密鑰密碼處理更快的加密數據要求越來越多。第二,公開密鑰密碼系統對選擇明文攻擊是脆弱的。密碼分析者只需要加密所有可能的明文,將得到的所有密文與要破解的密文比較,這樣,雖然它不可能恢復解密密鑰,但它能夠確定當前密文所對應的明文。
4.3.2 安全性分析
如果攻擊者無論得到多少密文,都沒有足夠的信息去恢復明文,那麼該密碼系統就是無條件安全的。在理論上,只有一次一密的系統才能真正實現這一點。而在本文所討論的混合密碼系統中,發信方每次可以自由選擇對稱密鑰來加密消息,然後用公鑰演算法來加密對稱密鑰,即用戶可以採用一次一密的方式來進行數據通信,達到上述的無條件安全。
5 小結
基於DES和RSA的混合密碼系統結合了公鑰密碼體制易於密鑰分配的特點和對稱密碼體制易於計算、速度快的特點,為信息的安全傳輸提供了良好的、快捷的途徑,使數據傳輸的密文被破解的幾率大大降低,從而對數據傳輸的安全性形成更有力的保障,並且發信方和收信方對密鑰的操作自由度得到了很大的發揮。

⑤ 1、對稱加密演算法

指加密和解密使用相同密鑰的加密演算法。對稱加密演算法用來對敏感數據等信息進頃弊指行加密,常用的演算法包括RC4、DES、3DES、AES、DESX、Blowfish、ChaCha20、RC5、RC6。前3種演算法被認為是不安全的,通常禁止使用。

國內:SM1、SM4、ZUC

國際:DES、3DES、AES

說明:SM1的128位保密強度和性能與AES相當,SM4的128位已升級為國際標准

塊密碼演算法:DES、3DES、AES

流密碼演算法:RC4

SM1:對稱加密演算法,加密強度為128位,採用硬體實現; 演算法不公開 ,只能通過相關安全產品進行使用。

SM4:對稱演算法,隨WAPI標准一起公布,可使用軟體實現,加密強度為128位。

SM4分組密碼演算法是我國自主設計的分組對稱密碼演算法,用於實現數據的加密/解密運算,以保證數據和信息的機密性。要保證一個對稱密碼演算法的安全性的基本條件是其具備足夠的密鑰長度,SM4演算法與AES演算法具有相同的密鑰長度分組長度128比特,因此在安全性上高於3DES演算法。

DES(Data Encryption Standard) :數據加密標准,速度較快,適用於加密 大量數據 的場合。

3DES(Triple DES) :是基於DES,對一塊數據用三個不同的密鑰進行三次加密,強度更高。

AES(Advanced Encryption Standard) :高級加密標准,是下一代的加密演算法標准,速度快,安全級別高;

ECB(Electronic Codebook)、特點:運算快速,支持並行處理,需要填充、說明:不推薦使用

CBC (Cipher Block Chaining)、特點:支持並行處理,需要填充、說明:推薦使用

CFB(Cipher Feedback)、特點:支持並行處理,不需要填充、說明:不推薦使用

OFB(Output Feedback)、特點:迭代運算使用流密碼模式,不需要填充、說明:不推薦使用

CTR (Counter)、特點:迭代運算使用流密碼模式,支持並行處理,不需要填充、說明:推薦使用

XTS(XEX-based tweaked-codebook)、特點:不需要填充、說明:用於本地硬碟存儲解決方案中

填充標准:明文長度必須是分組長度的倍數,如雀配卜嘩不是倍數,則必須有填充機制

PKCS#7填充:可處理的分組長度是1到255個位元組

AES演算法使用標准,比如:AES-128-CBC-PKCS#7,其中秘鑰長度128,分組模式CBC,填充標准PKCS#7,AES演算法默認分組128bit

閱讀全文

與aes採用相同的加密和解密演算法相關的資料

熱點內容
單片機比手機晶元還貴 瀏覽:33
java課表 瀏覽:555
如何在pdf裡面修改 瀏覽:929
橙光製作器檔案框在哪個文件夾 瀏覽:991
php如何抓取網頁數據 瀏覽:642
計數器單片機 瀏覽:966
游戲aoi演算法 瀏覽:844
phpmysqlint 瀏覽:912
怎麼從appstore商城買東西 瀏覽:184
大秀直播平台源碼 瀏覽:424
java視屏 瀏覽:934
電腦中如何給程序加密 瀏覽:240
java排序容器 瀏覽:942
職稱證書在哪個app下載 瀏覽:362
四九演算法算男女 瀏覽:659
javawindows8 瀏覽:498
2021世界程序員節 瀏覽:485
php翼支付 瀏覽:884
盈通伺服器ip地址 瀏覽:791
3des演算法的c語言實現 瀏覽:875