基于C++的DES加密算法实现代码实例
2009-04-02 20:01:06 来源:WEB开发网void CBase64::Decode(LPCSTR szMessage)
{
if(szMessage != NULL)
CBase64::Decode((const PBYTE)szMessage, lstrlenA(szMessage));
}
DWORD CBase64::_DecodeToBuffer(const TempBucket &Decode, PBYTE pBuffer)
{
TempBucket Data;
DWORD nCount = 0;
_DecodeRaw(Data, Decode);
for(int ii = 0; ii < 3; ii++)
{
pBuffer[ii] = Data.nData[ii];
if(pBuffer[ii] != 255)
nCount++;
}
return nCount;
}
void CBase64::_EncodeToBuffer(const TempBucket &Decode, PBYTE pBuffer)
{
TempBucket Data;
_EncodeRaw(Data, Decode);
for(int ii = 0; ii < 4; ii++)
pBuffer[ii] = Base64Digits[Data.nData[ii]];
switch(Decode.nSize)
{
case 1:
pBuffer[2] = '=';
case 2:
pBuffer[3] = '=';
}
}
void CBase64::_DecodeRaw(TempBucket &Data, const TempBucket &Decode)
{
BYTE nTemp;
Data.nData[0] = Decode.nData[0];
Data.nData[0] <<= 2;
nTemp = Decode.nData[1];
nTemp >>= 4;
nTemp &= 0x03;
Data.nData[0] |= nTemp;
Data.nData[1] = Decode.nData[1];
Data.nData[1] <<= 4;
nTemp = Decode.nData[2];
nTemp >>= 2;
nTemp &= 0x0F;
Data.nData[1] |= nTemp;
Data.nData[2] = Decode.nData[2];
Data.nData[2] <<= 6;
nTemp = Decode.nData[3];
nTemp &= 0x3F;
Data.nData[2] |= nTemp;
}
void CBase64::_EncodeRaw(TempBucket &Data, const TempBucket &Decode)
{
BYTE nTemp;
Data.nData[0] = Decode.nData[0];
Data.nData[0] >>= 2;
Data.nData[1] = Decode.nData[0];
Data.nData[1] <<= 4;
nTemp = Decode.nData[1];
nTemp >>= 4;
Data.nData[1] |= nTemp;
Data.nData[1] &= 0x3F;
Data.nData[2] = Decode.nData[1];
Data.nData[2] <<= 2;
nTemp = Decode.nData[2];
nTemp >>= 6;
Data.nData[2] |= nTemp;
Data.nData[2] &= 0x3F;
Data.nData[3] = Decode.nData[2];
Data.nData[3] &= 0x3F;
}
BOOL CBase64::_IsBadMimeChar(BYTE nData)
{
switch(nData)
{
case 'r': case 'n': case 't': case ' ' :
case 'b': case 'a': case 'f': case 'v':
return TRUE;
default:
return FALSE;
}
}
void CBase64::_Init()
{ // Initialize Decoding table.
int ii;
for(ii = 0; ii < 256; ii++)
CBase64::m_DecodeTable[ii] = -2;
for(ii = 0; ii < 64; ii++)
{
CBase64::m_DecodeTable[Base64Digits[ii]] = (CHAR)ii;
CBase64::m_DecodeTable[Base64Digits[ii]|0x80] = (CHAR)ii;
}
CBase64::m_DecodeTable['='] = -1;
CBase64::m_DecodeTable['='|0x80] = -1;
CBase64::m_Init = TRUE;
}
- ››基于IP地址的vsftp服务器
- ››基于MySQL 水平分区的优化示例
- ››基于CentOS5的Linux下pptp和openvpn的搭建及配置
- ››基于JavaScript的网页版塔防游戏
- ››基于Android平台 QQ大战360手机游戏爆红
- ››基于Windows Azure的云计算应用设计
- ››基于AES算法实现对数据的加密
- ››基于SoPC目标板Flash编程设计的创建及应用
- ››基于SolidWarks齿轮机构的运动分析与仿真
- ››基于Windwos Server 2008故障转移群
- ››基于JavaScript的REST客户端框架
- ››基于JavaScript和CSS的Web图表框架横向对比
更多精彩
赞助商链接