
14.04.2008, 15:43
|
|
Познающий
Регистрация: 17.01.2008
Сообщений: 94
Провел на форуме: 314553
Репутация:
38
|
|
вот кусок года здес у меня ест 2 edit box в одном логин в другом пасс. я логин и пасс шифрую и записываю в файл но мой шифровальный алгоритм работает с char`ми и я с TCHAR в char конвертирую с помощью функции указанный чуть выше и я шифрую функций fmt_base64() ниже функция шифрования у меня все работает нормальна
//...................
CString logBuff,passBuff;
CEdit* Log;
CEdit* Pass;
char *buffer,buf,*userpass;
Log = (CEdit*)GetDlgItem(IDC_EDIT1);
Pass = (CEdit*)GetDlgItem(IDC_EDIT2);
Log->GetWindowTextW(logBuff);
Pass->GetWindowTextW(passBuff);
if(wcslen(logBuff)!=0)
{
logBuff+=':'+passBuff;
int len =logBuff.GetLength()+2;
buffer=(char*)malloc(len);
WideCharToMultiByte(CP_ACP,WC_NO_BEST_FIT_CHARS,lo gBuff,50,buffer,50,NULL,NULL);
//...................................
функция шифрование
unsigned int fmt_base64(char *dest, const char *src, unsigned int len)
{
unsigned short bits = 0,temp = 0;
unsigned long written = 0;
unsigned int i;
const char base64[]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuv wxyz0123456789+/=";
for(i = 0; i < len; i++) {
temp <<= 8;
temp += src[i];
bits += 8;
while(bits > 6) {
dest[written] = base64[((temp >> (bits - 6)) & 63)];
written++;
bits -= 6;
}
}
if(bits) {
temp <<= (6 - bits);
dest[written] = base64[temp & 63];
written++;
}
while(written & 3) {
dest[written] = '=';
written++;
}
return written;
}
Последний раз редактировалось KSoniX; 17.04.2008 в 11:10..
|
|
|