ⅰ簡介:包括初始化演算法(ksa)和加密演算法兩大部分
ⅱ主要**:
初始化部分:(這個基本上是固定的)
void rc4_init(unsigned char*s,unsigned char*key,unsigned long len)//s最開始是傳入的長度為256的char型空陣列,用來存放初始化後的s
//key是金鑰,內容可定義 //最後乙個len是金鑰的長度
; unsigned char temp = 0;
for(i=0;i<256;i++)
for(i=0;i<256;i++)
}
在初始化的過程當中,金鑰的主要功能是將s攪亂,i確保每個元素都得到處理,j保證s的攪亂是隨機的。將s和明文進行xor運算,解密過程也完全相同。
加解密部分:(既可加密,也可解密)
void rc4_crypt(unsigned char*s,unsigned char*data,unsigned long len)//s是上面初始化之後的,data是我們要加密的資料,len是data的長度
;//s來接收初始化後的s,用來加密
unsigned char s2[256] = ;//用來存放初始化後的s,解密可用
char key[256] = ;//金鑰
char data[512] = ;
unsigned long len = strlen(data);
rc4_init(s,(unsigned char*)key,strlen(key));
for(i=0;i<256;i++)
rc4_crypt(s,(unsigned char*)data,len);//加密
printf("加密後為:%s",data);
rc4_crypt(s,(unsigned char*)data,len);//解密
printf("解密後為:%s",data);
return 0;
}
ⅲ綜合示例:(極客baby_re的解題)
#include #include void rc4_init(unsigned char*s,unsigned char*key,unsigned long len)
; unsigned char temp = 0;
for(i=0;i<256;i++)
for(i=0;i<256;i++) }
void rc4_crypt(unsigned char*s,unsigned char*data,unsigned long len)
{ int i=0,j=0,t=0;
unsigned long k=0;
unsigned char temp;
for(k=0;kⅳ總結歸納:
解密思路:
rc4加解密相當於對合運算,所有只要輸入的金鑰相同(找到金鑰,我們就得到了s),那麼執行相同操作即可對資料(找到加密後的資料)進行加密與解密
即:①:找到key,並使用key對s進行初始化(加解密使用的s均是相同的)
②: 找到加密之後的資料,傳入加解密函式即可
③:得出結果
偽**發現是rc4加密的特徵:
出現很多迴圈條件都<256,也出現多次%256,最後還進行了異或等。對照上面原始碼進行分析
RC4加密演算法
rc4於1987年提出,和des演算法一樣,是一種對稱加密演算法,也就是說使用的金鑰為單鑰 或稱為私鑰 但不同於des的是,rc4不是對明文進行分組處理,而是位元組流的方式依次加密明文中的每乙個位元組,解密的時候也是依次對密文中的每乙個位元組進行解密。rc4演算法的特點是演算法簡單,執行速度快,而且...
RC4加密演算法
rc4於1987年提出,和des演算法一樣,是一種對稱加密演算法,也就是說使用的金鑰為單鑰 或稱為私鑰 但不同於des的是,rc4不是對明文進行分組處理,而是位元組流的方式依次加密明文中的每乙個位元組,解密的時候也是依次對密文中的每乙個位元組進行解密。rc4演算法的特點是演算法簡單,執行速度快,而且...
rc4加密演算法
rc4演算法,詳情可以看下這個文件 rc4加密演算法 加密原理 先了解一下流密碼的結構 金鑰輸入到乙個偽隨機數 位元 發生器中,輸出一串8位元的隨機數,稱為金鑰流 金鑰流通過與同一時刻的明文進行異或運算產生密文 1 通過金鑰排程演算法ksa初始化狀態向量s s就是乙個隨機數發生器,稱為s box 2...