RC4加密算法
来源:互联网 发布:快到期已备案域名购买 编辑:程序博客网 时间:2024/05/17 09:14
1、头文件
//// RC4.h//#ifndef _RC4_H_ #define _RC4_H_ class CRC4{public: CRC4(IN const CString &sKey); void Encode(IN OUT BYTE *pData, IN LONG nLength);private: void _Init(); inline void _Swap(BYTE *pb1, BYTE *pb2);private: CString m_sKey; BYTE m_bBuff0[256]; BYTE m_bBuff1[256];};#endif // !_RC4_H_
2、源文件
//// RC4.cpp//#include "RC4.h"CRC4::CRC4(const CString &sKey) :m_sKey(sKey){}void CRC4::Encode(BYTE *pData, LONG nLength){ _Init(); LONG nPos = 0; BYTE bTmp1 = 0, bTmp2 = 0; BYTE bTmp3 = 0, bTmp4 = 0; while (nPos++ < nLength) { bTmp1 = (bTmp1 + 1) % 256; bTmp2 = (bTmp2 + m_bBuff0[bTmp1]) % 256; _Swap(m_bBuff0 + bTmp1, m_bBuff0 + bTmp2); bTmp3 = (m_bBuff0[bTmp1] + m_bBuff0[bTmp2]) % 256; bTmp4 = m_bBuff0[bTmp3]; *pData ^= bTmp4; pData++; }}void CRC4::_Init(){ CString sTmp(_T("")); for (LONG nIndex = 0; nIndex<256; nIndex++) { m_bBuff0[nIndex] = (BYTE)nIndex; sTmp = m_sKey.Right(m_sKey.GetLength() - nIndex%m_sKey.GetLength()); m_bBuff1[nIndex] = (BYTE)_ttol(sTmp); } LONG nTmp = 0; for (LONG nIndex = 0; nIndex<256; nIndex++) { nTmp = (nTmp + m_bBuff0[nIndex] + m_bBuff1[nIndex]) % 256; _Swap(m_bBuff0 + nIndex, m_bBuff0 + nTmp); }}void CRC4::_Swap(BYTE *pb1, BYTE *pb2){ BYTE bTmp = *pb1; *pb1 = *pb2; *pb2 = bTmp;}
0 0
- RC4加密算法
- rc4加密算法
- RC4加密算法
- RC4加密算法
- RC4加密算法
- rc4加密算法
- RC4加密算法
- RC4流加密算法
- RC4加密算法及其实现
- RC4加密算法(记录)
- RC4加密算法实践
- 加密算法之RC4
- RC4加密算法实现
- VB 6.0中的RC4加密算法
- vb6下的加密算法 RC4
- RC4加密算法 解析及代码
- RC4加密算法及其scala实现
- golang rc4加密算法的使用
- 【Unity 3D】学习笔记二:Button控件(按钮)
- 解决"This element neither has attached source nor attached Javadoc"问题
- 读书笔记---音频设备访问
- 一张图教你PID#司空徵产品#
- 给自己打打气
- RC4加密算法
- 2014.6.1=每日做题情况。。你这么弱,这么水,你对得起ACMer这个称号吗?
- HDU2206 IP的计算 【经典题】
- InstallShield注册OCX插件
- 单点并联接地 多点串联地的区别
- 构造函数能否被继承,为什么?
- Ubuntu下面搭建Android应用开发环境
- HDU 3721 Building Roads
- struts2新特性预览