资源简介
是我实现的一个RC4算法演示程序,有详细的注释,代码很清楚,一看就能明白RC4算法的原理及使用。
你,值得拥有,呵呵!
代码片段和文件信息
/*
* RC4 algorithm.
*
* Yongle Lai
*
* yongle_lai@hotmail.com
*/
/*
* RC4算法的原理很简单,包括初始化算法(KSA)和伪随机子密码
* 生成算法(PRGA)两大部分。
*
* 下述代码中init_kbox和init_sbox属于初始化算法部分KSA;
* 而rc4_encrypt函数中的主要内容就是伪随机数生成器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
* 在经过伪随机子密码生成算法的处理后可以得到不同的子密钥序列,
* 并且,该序列是随机的:
*/
void init_sbox(void)
{
int i j = 0;
unsigned char tmp;
for (i = 0; i < SBOX_LEN; i++)
sbox[i] = i;
for (i = 0; i < SBOX_LEN; 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;
/*
* 由于密钥串的长度较短,所以在初始化时是循环利用的。
*/
for (i = 0; i < SBOX_LEN; 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
- 下一篇:小组合作计分器,电子白板专用
相关资源
- Dcpcrypt2delphi加解密控件,包含很多加
- 最优服务次序问题C代码
- 椭圆曲线加密算法密钥生成器
- 国密SM2文档详细
- AES加密算法Dll
- 各种加密算法代码
- linux文件读写锁C代码
- Delphi加密算法大全2DES_3DES_3DES3_AES_ba
- kriging 克里金插值法 C代码
- OOK解调C代码
- PID autoTune PID 自整定算法C代码
- ssl弱加密算法套件检测工具
- 电容屏USB转IIC代码.zip
- 各种算法程序.rar
- KUKA机器人KRC4操作说明书
- KUKA U 盘 2.0 Recovery.pdf
- webrtc中AEC代码解读.zip
- SNL桑迪亚-EFDC代码
- JWT的RS256和HS256签名算法Demo.zip
- rsa加密算法Delphi实现.zip
- WAV转换为C代码的小工具
-
ba
se64_hmac_sha1加密算法.rar - 自抗扰控制(ADRC)C代码实现
-
C代码格式化工具:Ast
yle_3.0.1_windo - ebcot vc代码
- VC/MFC MD5 加密算法
- 小波变换c代码(供初学者使用)
- AES C代码实现
- 读取pgm文件的C代码实现
- 用讲解RSA加密算法(精)
评论
共有 条评论