资源简介
是我实现的一个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
- 下一篇:小组合作计分器,电子白板专用
相关资源
- RSA AES DES ECC加密算法源码
- modbus51_c代码
- 提供几个加密算法的源码
- 易语言叮小当动态加密算法源码
- 易语言RC4加密解密源码
- STM32F030从机中断接收的iic代码,附带
- 基于51单片机的教室智能照明控制系统
- 51单片机课程设计内含50多个课程设计
- AES高级加密算法的verilog语言实现
- STM32 加密算法 源码代码包括AES的5种
- stm32 iap功能实现
- Delphi AES加密算法程序.rar
- KUKA KRC4专家编程
- KUKA_KRC4外部轴配置
- Marlin代码详细注释
- DES和RSA混合加密算法的研究
- 时间差分法帧间差分法opencv和vc代码实
- 轮廓波contourlet变换的VC代码
- 超混沌图像加密算法的密码分析与改
- MWC代码解读
- 基于Logistic映射和Chebyshev映射的快速图
- DES加密算法的E置换P置换
- 库卡 KRC4配置软件中文说明书KST_Work
- MPU6050的C代码程序包括DMP直接解算姿态
- STM32程序。多串口。DMA方式。C代码
- 基于混沌映射的彩色图像加密算法分
- 同态加密算法实现
- MultiWii MWC代码解读
- LPC1769 FLASH IAP 读写 有详细c代码,可以
-
iSwift for Mac(ob
jective-C代码转换工具
评论
共有 条评论