RC4 加解密

自己从网上看了好多关于RC4加解密的C++代码,发现很多都是有问题的,当时因为项目急需,找到的代码运行都是有问题,关键是还是写的很长(明明只需要一个函数就能解决的问题,为什么要写的那么长),于是自己翻译的一段PHP代码,修改过来的。下面贴下自己的代码。


参数: 需要加解密的数据buff ,加解密的数据长度,加密钥匙的buff ,加密钥匙的长度。

void RC4_DeCRYPT_CRYPT(unsigned char * strData ,unsigned long nDatalen,unsigned char * strKey,unsigned long nKeylen )
{	
	unsigned char sBox[256] = { 0 };
	int i =0, j = 0,ntemp = 0, key[256] = {0};
	for(i=0;i<256;i++)
	{
		sBox[i]=i;
		key[i]=strKey[i%nKeylen];
	}
	for (i=0; i<256; i++)
	{
		j=(j+sBox[i]+key[i])%256;
		std::swap(sBox[i],sBox[j]);
	}
	i =0, j = 0;
	for(int k=0;k<nDatalen;k++)
	{
		i=(i+1)%256;
		j=(j+sBox[i])%256;
		std::swap(sBox[i],sBox[j]);
		ntemp=(sBox[i]+sBox[j])%256;
		char ch = strData[k] ^ sBox[ntemp];
		strData[k] = ch;
	}
}
OK  ,就这么几行代码。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值