Witam.
Stworzyłem bibliotekę DLL, która oferuje proste metody szyfrowania ( przesunięcia kodów ASCII ).
Testowałem aplikację na Windows XP, wszystko było w porządku.
Uruchomiłem program pod Windows 7 i pojawił się dziwny problem.
Otóż, funkcja z biblioteki DLL szyfruje tylko cyfry oraz znaki specjalne, natomiast znaków a-z i A-Z już niestety nie. Nie mam pojęcia dlaczego tak się dzieje. Nie są to jakieś skomplikowane algorytmy, tylko przesunięcie kodu ASCII o dany offset.
Przykład błędnego wyniku szyfrowania :
Dane do zaszyfrowania : ALAMAKOTA12345
Wynik : ALAMAKOTA83756
Część łańcucha "ALAMAKOTA" powinna zostać zaszyfrowana - Windows XP nie ma z tym problemu
Export funkcji z biblioteki
string __stdcall encrypt_code(string _authentication_code)
Nagłówek funkcji
string encrypt_code(string _authentication_code)
Fragment funkcji szyfrującej
for(int i=0; i < CODE_LEN; i++)
{
sign = _code[i];
if ((sign>=65)&&(sign<=90))
{
sign-=65;
sign+=_offset;
sign=(char)fmod(sign,26);
sign+=65;
_code_enc[i] = sign;
}
else if ((sign>=97)&&(sign<=122))
{
sign-=97;
sign+=_offset;
sign=(char)fmod(sign,26);
sign+=97;
_code_enc[i] = sign;
}
else if ((sign>=48)&&(sign<=57))
{
sign-=48;
sign+=13;
sign=(char)fmod(sign,10);
sign+=48;
_code_enc[i] = sign;
}
else
{
switch(sign)
{
case '.':
_code_enc[i] = '@';
break;
case '/':
_code_enc[i] = '$';
break;
default:
_code_enc[i] = sign;
}
}
}
Przecież to są proste operacja na znakach ( operuje na zmiennych typu string )
Macie jakiś pomysł co może być nie tak ?
Z góry dzięki za wskazówki.
Pozdrawiam.