RC4加密演算法

2021-10-14 07:46:08 字數 1642 閱讀 8827

ⅰ簡介:包括初始化演算法(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...