簡述RC4加密算法

RC系列算法在加密算法界有著較高的地位,原因也很簡單,因?yàn)樗鼈兌甲銐騼?yōu)秀,下面我們就來了解一下RC系列算法中的RC4加密算法。

RC4加密算法簡介

RC4算法也稱“Rivest Cipher 4”,它是由“RSA三人組”中的Ron Rivest在1987年設(shè)計(jì)的密鑰長度可變的流加密算法簇。之所以稱其為“簇”,是由于其核心部分的S-box長度可為任意,但一般為256字節(jié)。

RC4 流密碼是使用最廣泛的流密碼之一,它通過算法一次一個(gè)字節(jié)地加密消息,簡單并且操作速度快,速度可以達(dá)到DES加密的10倍左右。

RC4加密算法

RC4加密算法的加密原理

在介紹RC4算法原理之前,我們需要先看看算法史的幾個(gè)關(guān)鍵變量:

  1. 密鑰流:Rc4算法的關(guān)鍵是根據(jù)明文和密鑰生成相應(yīng)的密鑰流,密鑰流的長度和明文的長度是對(duì)應(yīng)的,也就是說明文的長度是500字節(jié),那么密鑰流也是500字節(jié)。當(dāng)然,加密生成的密文也是500字節(jié),因?yàn)槊芪牡趇字節(jié)=明文第i存節(jié)^密鑰流第i字節(jié);
  2. 狀態(tài)向量S:長度為256,S[0],S[1]....S[255]。每個(gè)單元都是一個(gè)字節(jié),算法運(yùn)行的任何時(shí)候,S都包括0-255的8比特?cái)?shù)的排列組合,只不過值的位置發(fā)生了變換;
  3. 臨時(shí)向量T:長度也為256,每個(gè)單元也是一個(gè)字節(jié)。如果密鑰的長度是256字節(jié),就直接把密鑰的值賦給T,否則,輪轉(zhuǎn)地將密鑰的每個(gè)字節(jié)賦給T;
  4. 密鑰K:長度為1-256字節(jié),注意密鑰的長度keylen與明文長度、密鑰流的長度沒有必然關(guān)系,通常密鑰的長度為16字節(jié)(128比特)。

RC4加密算法

加密過程

第一步:先初始化狀態(tài)向量S(256個(gè)字節(jié),用來作為密鑰流生成的種子1)按照升序,給每個(gè)字節(jié)賦值0,1,2,3,4,5,6...254,255。

第二步:初始密鑰(由用戶輸入),長度任意,如果輸入長度小于256個(gè)字節(jié),則進(jìn)行輪轉(zhuǎn),直到填滿。

例如輸入密鑰的是1,2,3,4,5,那么填入的是1,2,3,4,5,1,2,3,4,5,1,2,3,4,5...由上述輪轉(zhuǎn)過程得到256個(gè)字節(jié)的向量T(用來作為密鑰流生成的種子2)。

第三步:開始對(duì)狀態(tài)向量S進(jìn)行置換操作(用來打亂初始種子1)按照下列規(guī)則進(jìn)行:

從第零個(gè)字節(jié)開始,執(zhí)行256次,保證每個(gè)字節(jié)都得到處理,這樣處理后的狀態(tài)向量S幾乎是帶有一定的隨機(jī)性了。

第四步:密鑰流的生成與加密,為每個(gè)待加密的字節(jié)生成一個(gè)偽隨機(jī)數(shù),用來和明文進(jìn)行異或,從而進(jìn)行加密。加密中,將K的值與明文的下一字節(jié)異或,解密時(shí)將K的值與密文的下一字節(jié)異或。

RC4加密算法

RC4加密算法的優(yōu)缺點(diǎn)

RC4算法具有實(shí)現(xiàn)簡單,加密速度快,對(duì)硬件資源消耗費(fèi)用低等優(yōu)點(diǎn),還可以防御暴力破解,使其躋身于輕量級(jí)加密算法的行列。

但在使用優(yōu)先等效保密規(guī)則的無線網(wǎng)絡(luò)中,在特定的情況下,可以在RC4算法加密的過程獲取密鑰,這樣意味著RC4算法有可能對(duì)無線通信網(wǎng)絡(luò)安全造成威脅。

免責(zé)聲明:素材源于網(wǎng)絡(luò),如有侵權(quán),請(qǐng)聯(lián)系刪稿。