| 基于C++的DES加密算法实现代码实例 |
| 来源:
发布时间:2008-04-01 发布人:
浏览:
人次
字体:
[大
中
小]
|
|
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; }
共3页: 上一页 [1] [2] 3 下一页
| |
| |
|
|
|
|
| §最新评论:(评论内容只代表网友观点,与本站立场无关!) | |
|
|
|
|
| 注意:请勿在本站发布政治话题、色情及违反法律的内容。 |
IT知道网 声明:刊登此文章是为了传递更多信息,文章内容仅供参考,转载请注明出处。 |