采用rc4加密算法写的
主要算法:
//加解密前需初始化S盒
int i=0,j=0;
unsigned char m_sbox[256]; //此数组称为S盒
unsigned char m_keystr[256]; //存放密钥,长度不定
unsigned char temp;
//利用密钥初始化S盒
for(i=0;i<256;i++)m_sbox[i]=i;
for(i=0;i<256;i++)
{
j=(j+m_sbox[i]+m_keystr[i%strlen(m_keystr)])%256; //m_keystr[i%strlen(m_keystr)]意为反复重复使用密钥
//交换m_sbox[i]和m_sbox[j];
temp=m_sbox[i];
m_sbox[i]=m_sbox[j];
m_sbox[j]=temp;
}
//初始化完成,可以加解密
//加密、解密时,明/密文存于buff,长度size
int pb;
unsigned char temp,i=0,j=0,k;
for(pb=0;pb<size;pb++)
{
//改变S盒
i=i+1;
j+=m_sbox[i];
//交换m_sbox[i]和m_sbox[j];
temp=m_sbox[i];
m_sbox[i]=m_sbox[j];
m_sbox[j]=temp;
//异或加密
k=m_sbox[i]+m_sbox[j];
buff[pb]^=m_sbox[k];
}