最近做个C++小项目,其中的用户名、密码要求加密,要求原字母、数字不会重现就行。
//Password.h文件
CString Base64Encode(LPCTSTR lpszSrc);//加密
CString Base64Decode(LPCTSTR lpszSrc);//解密
//Password.cpp文件
CString Base64Encode(LPCTSTR lpszSrc)
{
ASSERT(lpszSrc != NULL && AfxIsValidString(lpszSrc));
const char BASE64_ENCODE_TABLE[64] = {
65, 66, 67, 68, 69, 70, 71, 72, // 00 - 07
73, 74, 75, 76, 77, 78, 79, 80, // 08 - 15
81, 82, 83, 84, 85, 86, 87, 88, // 16 - 23
89, 90, 97, 98, 99, 100, 101, 102, // 24 - 31
103, 104, 105, 106, 107, 108, 109, 110, // 32 - 39
111, 112, 113, 114, 115, 116, 117, 118, // 40 - 47
119, 120, 121, 122, 48, 49, 50, 51, // 48 - 55
52, 53, 54, 55, 56, 57, 43, 47 };// 56 - 63
unsigned int iTest;
LPCTSTR pInBuffer = lpszSrc;
int nSize = (int)_tcslen(lpszSrc);
char* pOutBuffer = new char[nSize / 3 * 4 + 5];
ZeroMemory(pOutBuffer, nSize / 3 * 4 + 5);
for (int i = 0; i < nSize / 3; i++)
{
iTest = (unsigned char)*pInBuffer++;
iTest = iTest << 8;
iTest = iTest | (unsigned char)*pInBuffer++;
iTest = iTest << 8;
iTest = iTest | (unsigned char)*pInBuffer