c++ and openssl (получение хэшей)

Модератор: Модераторы разделов

banzai
Сообщения: 18

c++ and openssl

Сообщение banzai »

Всем привет, возникла необходимость получать несколько хэшей по различным алгоритмам (md5, sha256...) в коде на c++. Проект будет компилироваться как в линуксе, так и в винде. Решил использовать библиотеку шифрования из openssl. Не пойму, почему при получении хэша, например, md5, через либу openssl и функцию php md5() результат ненмого разный. Всегда отличаются символы с 3 по 6. Например, хэш md5 строки 'abc' - 900150983cd24fb0d6963f7d28e17f72 (php) и 903000983cd24fb0d6963f7d28e17f72 (OpenSSL). Помогите, плиз, совсем запутался.
Вот образец кода, может я что не так делаю?

Код: Выделить всё

unsigned char* md  = new unsigned char[MD5_DIGEST_LENGTH];
int i;
CString cht;
MD5_CTX ctx;
MD5_Init(&ctx);
MD5_Update(&ctx, "abc", 3);
MD5_Final(md, &ctx);
//CString Text = (unsigned char*)(LPCTSTR)md;
//SendEvent("SCard","Start Authentication",Text.AllocSysString());

for (i = 0; i < MD5_DIGEST_LENGTH; i++) {
    char* ch;
    sprintf(ch,"%02x", md[i]);
    CString Text = (char*)(LPCTSTR)ch;
    SendEvent("SCard","Start Authentication",Text.AllocSysString());
}
Спасибо сказали: