MD5 Ha sh не производит правильное Ha sh на Linux - PullRequest
1 голос
/ 24 марта 2020

Я пытаюсь получить sh некоторые строки с алгоритмом хеширования md5 в C ( код взят отсюда ), но не могу заставить его работать на моем Ubuntu vm; Я получаю совершенно разные га sh для каждой строки.

Точно такой же код прекрасно работает на Windows 10 (, используя этот сайт в качестве ссылки ). Я компилирую с g cc для обоих oss.

Есть ли что-то очевидное, что я пропускаю?

edit: пример кода

unsigned char buffer[16];
MDString("some test string" ,buffer);
for(int i = 0; i < 16; i++) printf("%02x" ,buffer[i]);

On windows: c320d73e0eca9029ab6ab49c99e9795d

Вкл. linux: bbd22e6dfadec16827873f1a22adf991

На веб-сайте: c320d73e0eca9029ab *ab49c99e9795 * 101 * 2 8 редакт.

1 Ответ

2 голосов
/ 24 марта 2020

В 64-битных компиляциях long - 32-битный в Windows, в то время как 64-битный в Linux. Достаточно просто поменять

typedef unsigned long int UINT4;

на

typedef unsigned int UINT4;

, чтобы исправить наиболее явные проблемы с кодом. Он по-прежнему выдает предупреждения для старых форм параметров функций. Вывод:

c320d73e0eca9029ab6ab49c99e9795d
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...