Russian Qt Forum

Qt => Вопросы новичков => Тема начата: max1983 от Февраль 15, 2011, 12:21



Название: MD5 Строки.
Отправлено: max1983 от Февраль 15, 2011, 12:21
Чот я в этом не силен..
Вот код

Код:

inline QString getMD5(QString source)
{
source = "PASSWORD";
QCryptographicHash md5(QCryptographicHash::Md5);
md5.addData(source.toAscii());
return md5.result().toHex().constData(); //В переменной cod полученный md5-хэш

         }

Возвращает 319f4d26e3c536b5dd871bb2c52e3178
А этот

Код:
inline String ^ getMD5(String ^ input)
{

//Шаг 1 подсчитываем МД5 хеш
MD5 ^ md5Hasher = System::Security::Cryptography::MD5::Create();
array<System::Byte> ^ inputBytes  =  md5Hasher->ComputeHash(Encoding::ASCII->GetBytes(input));
array<System::Byte> ^ hash = md5Hasher->ComputeHash(inputBytes);

//Шаг 2 конвертируем байты в хекс массив строковой
StringBuilder ^ sb = gcnew StringBuilder();
    for (int i = 0; i < hash->Length; i++)
    {
        sb->Append(hash[i].ToString("X2"));
    }

    return sb->ToString();
}

РЕЗУЛЬТАТ - DBCE1D4BCE4B61A085D9D097C4B42F8B

Начальная строка "PASSWORD";
Примеры для QT и VS везде одинаковые а результат разный.
Я так понимаю делают они это разными методами вот и результат разный.
Подскажите кто знает как правильно это сделать.


Название: Re: MD5 Строки.
Отправлено: Fat-Zer от Февраль 15, 2011, 13:57
qt - правильно считает, а второе это что за язык вообще?


Название: Re: MD5 Строки.
Отправлено: GreatSnake от Февраль 15, 2011, 14:06
> echo PASSWORD | md5sum
8b04b6229e11c290efd5cd8190aa9261

И кто в итоге прав?


Название: Re: MD5 Строки.
Отправлено: Fat-Zer от Февраль 15, 2011, 14:25
так считать нельзя... echo в конец добавляет 0Ah


Название: Re: MD5 Строки.
Отправлено: GreatSnake от Февраль 15, 2011, 14:28
Цитировать
так считать нельзя... echo в конец добавляет 0Ah
Ваша правда. Забыл -n добавить к echo.
> echo -n PASSWORD | md5sum
319f4d26e3c536b5dd871bb2c52e3178


Название: Re: MD5 Строки.
Отправлено: Fat-Zer от Февраль 15, 2011, 14:37
спасибо, не знал об этом ключе


Название: Re: MD5 Строки.
Отправлено: max1983 от Февраль 15, 2011, 14:50
......а второе это что за язык вообще?
C++ .NET CLI

Ну так значит пример микрософта не годится..
Спасибо!


Название: Re: MD5 Строки.
Отправлено: Fat-Zer от Февраль 15, 2011, 15:05
C++ .NET CLI
на делфи чем-то похож...


Название: Re: MD5 Строки.
Отправлено: crackedmind от Февраль 16, 2011, 04:53
Код:
	array<System::Byte> ^ inputBytes  =  md5Hasher->ComputeHash(Encoding::ASCII->GetBytes(input));
array<System::Byte> ^ hash = md5Hasher->ComputeHash(inputBytes);
дык тут же 2 раза хэш считается, или я чето путаю спросонья? :)


Название: Re: MD5 Строки.
Отправлено: max1983 от Февраль 16, 2011, 10:52
дык тут же 2 раза хэш считается, или я чето путаю спросонья? :)
Вы абсолютно правы!
В примере приводится хеш хеша а я не обратил на это внимания "думал так надо".
Спасибо.