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

  1. strona http://www.webtoolkit.info/demo/javascript-sha-1 (javascript)
  2. 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ź