chciałem sobie zrobić DLL-kę która by umożliwiała operacje szyfrujące
zacząłem od rzeczy najprostszej czyli haszowania - no pojawił się problem polskich znaków
projekt jest załozony jako (VS 2008) Win32App -> DLL -> MFC (strona kodowa to unicode)
deklaracja funkcji haszującej
hash(CString & strBuffer,int iType)
jak widać funkcja przyjmuje dwa argumenty - string do zhaszowania i typ (na razie 1 to MD5, a 2 to SHA1)
sama funkcja to nic szczególnego - drobna przeróbka tego co można znaleźć w internecie
ale zaczęło mi to źle działać - weryfikatorem było
- strona http://www.webtoolkit.info/demo/javascript-sha-1 (javascript)
- funkcja sha1() w PHP
zorientowałem się, że to nie jest takie proste jak w PHP więc dorobiłem dwie funkcje pracujące na tekście
pierwsza zwraca tablicę znaków, czyli jako taka konwersja z CString do char*
char * CStringOpr::getBuffer(IN const CString & strVar)
{
CString strRR;
strRR=strVar;
int nSize = strVar.GetLength();
char *pAnsiString = new char[nSize+1];
wchar_t *pWchar = new wchar_t[nSize+1];
pWchar = strRR.GetBuffer(strRR.GetLength());
wcstombs(pAnsiString,pWchar,nSize+1);
return pAnsiString;
}
a ta zwraca tablice BYTE
BYTE * CStringOpr::getByteBuff(IN const CString & strVar)
{
BYTE* byteData = new BYTE[strVar.GetLength()];
byteData = (BYTE*)getBuffer(strVar);
return byteData;
}
no i działa w porządku (czyli jest zgodne ze wzorcem) - do czasu pojawienia się polskiego znaku - gdy wpiszę ą, ę itp - to daje ten sam rezultat, ogólnie w przypadku znaków innych niż standardowe (A-z a-z 0-9) działa źle
jak i co zrobić
1)aby haszowanie działało poprawnie z polskimi znakami
2)aby dll-ka działała dołączona do projektu zarówno w multibyte jak i unicode
z góry dziękuję za odpowiedź