RC4加密算法理解
-
概念
-
在密碼學中,RC4(來自Rivest Cipher 4的縮寫)是一種流加密算法,密鑰長度可變。它加解密使用相同的密鑰,因此也屬於對稱加密算法。RC4是有線等效加密(WEP)中採用的加密算法,也曾經是TLS可採用的算法之一。
-
原理:總體來說包括兩個部分:1.初始化密匙盒子。2.僞隨機密碼生成
PS:不需要過分轉牛角爲什麼能這樣子加密,這涉及到數學問題了,不過有興趣可以去理解一下。
-
流程
- 初始化盒子S-box,256個字節,分別賦值爲0-255.(生成的種子1)
- 初始化密匙,就是你輸入的flag,然後輪轉填滿256個字節,如:輸入abc,就生成abcabcabc…(生成種子2),以此類推,類比。這裏就先記作k[25600]吧。
- 開始對盒子S-box打亂(打亂種子1)------>
j=0;//臨時變量 for(i=0;i<256;i++) j=(j+Sbox[i]+k[i])mod256;//記住就好,小菜雞也不大曉得原理鴨 //k是生成種子2 swap(Sbox[i],Sbox[j]);//打亂,swap函數自己簡單寫個去實現就好了
- 下面開始生成密匙流(最後就是要用這個密匙流來異或加密的)
- 先計算輸入flag的字節數(strlen),然後開始生成對應的異或要用的密匙流)------->
i=0; j=0; while(lenth--) { i=(i+1)mod256; j=(j+Sbox[i])mod 256; swap(s[i],s[j]); t=(S[i]+S[j])mod256; keystream=Sbox[t]; Data[對應的位數]^=k;//此處完成加密 }
-
總結
RC4算法還是蠻好理解的,多敲幾遍就好了。