資源簡介
是我實現(xiàn)的一個RC4算法演示程序,有詳細的注釋,代碼很清楚,一看就能明白RC4算法的原理及使用。
你,值得擁有,呵呵!
代碼片段和文件信息
/*
?*?RC4?algorithm.
?*
?*?Yongle?Lai
?*
?*?yongle_lai@hotmail.com
?*/
/*
?*?RC4算法的原理很簡單,包括初始化算法(KSA)和偽隨機子密碼
?*?生成算法(PRGA)兩大部分。
?*
?*?下述代碼中init_kbox和init_sbox屬于初始化算法部分KSA;
?*?而rc4_encrypt函數(shù)中的主要內(nèi)容就是偽隨機數(shù)生成器PRNG。
?*/
#include?
#include?
#define?SBOX_LEN?256
unsigned?char?sbox[SBOX_LEN];
unsigned?char?kbox[SBOX_LEN];
unsigned?char?key[]?=?“23456“;
#define?KEY_LEN?5
unsigned?char?data[]?=?“rc4?test?data!“;
#define?DATA_LEN?14
unsigned?char?data_en[DATA_LEN];
unsigned?char?data_de[DATA_LEN];
/*
?*?在初始化的過程中,密鑰的主要功能是將S-box攪亂,i確保S-box的
?*?每個元素都得到處理,j保證S-box的攪亂是隨機的。而不同的S-box
?*?在經(jīng)過偽隨機子密碼生成算法的處理后可以得到不同的子密鑰序列,
?*?并且,該序列是隨機的:
?*/
void?init_sbox(void)
{
????int?i?j?=?0;
????unsigned?char?tmp;
????
????for?(i?=?0;?i?????????sbox[i]?=?i;
????for?(i?=?0;?i?????{
????????j?=?(j?+?sbox[i]?+?kbox[i])?%?SBOX_LEN;
????????tmp?=?sbox[i];
????????sbox[i]?=?sbox[j];
????????sbox[j]?=?tmp;
????}
}
void?init_kbox(void)
{
????int?i?j?=?0;
????
????/*
?????*?由于密鑰串的長度較短,所以在初始化時是循環(huán)利用的。
?????*/
????for?(i?=?0;?i?????????kbox[i]?=?key[i?%?KEY_LEN];
}
void?rc4_encrypt(unsigned?char?*data?unsigned?char?*buf?int?len)
{
????int?i?=?0?j?=?0?t?index?=?0;
????unsigned?char?tmp;
????
????if?(data?==?NULL?||?bu
- 上一篇:JPEG圖片文件編解碼詳解.doc
- 下一篇:小組合作計分器,電子白板專用
評論
共有 條評論