RC4加密出现空字符
最近做的竞赛用了RC4加密,网上COPY的代码(没兴趣自己研究密码学,而且我没有数学天分),整到MFC程序中,出了点小问题。
先上代码(做了点小修改)
#include<stdio.h>
#include<string.h>
/*-----------------------初始化函数定义--------------------------*/
void rc4_init(unsigned char *s, unsigned char *key, unsigned long Len) // s为S-box的地址,key是密钥字符串地址,Len是密钥的长度
{
int i=0,j=0;
char k[256] = {0};
unsigned char tmp = 0;
for(i=0;i<256;i++)
{
s[i]=i;
k[i]=key[i%Len];
}
for (i=0; i<256; i++)
{
j=(j+s[i]+k[i])%256;
tmp = s[i];
s[i] = s[j]; //交换s[i]和s[j]
s[j] = tmp;
}
}
/*-----------------------加解密函数定义--------------------------*/
void rc4_crypt(unsigned char *s, unsigned char *Data, unsigned long Len) // s是S-box的地址,Data是需要加(解)密字符串地址
{ // Len是需加(解)密字符串的长度
int i=0,j=0,t=0;
unsigned long k = 0;
unsigned char tmp;
for(k&#
最近做的竞赛用了RC4加密,网上COPY的代码(没兴趣自己研究密码学,而且我没有数学天分),整到MFC程序中,出了点小问题。
先上代码(做了点小修改)
#include<stdio.h>
#include<string.h>
/*-----------------------初始化函数定义--------------------------*/
void rc4_init(unsigned char *s, unsigned char *key, unsigned long Len) // s为S-box的地址,key是密钥字符串地址,Len是密钥的长度
{
int i=0,j=0;
char k[256] = {0};
unsigned char tmp = 0;
for(i=0;i<256;i++)
{
s[i]=i;
k[i]=key[i%Len];
}
for (i=0; i<256; i++)
{
j=(j+s[i]+k[i])%256;
tmp = s[i];
s[i] = s[j]; //交换s[i]和s[j]
s[j] = tmp;
}
}
/*-----------------------加解密函数定义--------------------------*/
void rc4_crypt(unsigned char *s, unsigned char *Data, unsigned long Len) // s是S-box的地址,Data是需要加(解)密字符串地址
{ // Len是需加(解)密字符串的长度
int i=0,j=0,t=0;
unsigned long k = 0;
unsigned char tmp;
for(k&#