rc4算法C语言实现

参数说明

1.pSecret指向加密密钥

2.SecretLen加密密钥长度(单位字节)

3.pMessage指向需要加密的消息

4.MessageLen需要加密的消息的长度(单位字节)

5.pOut指向加密后的消息

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

int rc4(char *pSecret,int SecretLen,char *pMessage,int MessageLen,char *pOut )

{
   int ia;


   unsigned char i=0,j=0,t;


   unsigned char s[256];


   unsigned char k[256];


   for(ia=0;ia<=255;ia++,i++)


     s[ia]=i;


   for(ia=0;ia<=255;ia++)


     k[ia]=((unsigned char *)pSecret)[ia%SecretLen];


   for(ia=i=j=0;ia<=255;ia++,i++)
   {
      j=(j+s[i]+k[i])%256;


      t=s[i];s[i]=s[j];s[j]=t;
   }
   for(ia=i=j=0;ia<=MessageLen-1;ia++)
   {
      i=(i+1)%256;


      j=(j+s[i])%256;


      t=s[i];s[i]=s[j];s[j]=t;


      t=(s[i]+s[j])%256;


      ((unsigned char *)pOut)[ia]=s[t]^((unsigned char *)pMessage)[ia];
   }
   return 0;
}

你可能感兴趣的:(算法源码)