Я пытаюсь использовать функцию crypt()
, найденную в <crypt.h>
в C, и когда я пытаюсь набрать, например, sh строку в MD5, она возвращает что-то отличное от стандартного MD5 га sh будет производиться из такого инструмента, как md5sum
. Пример / Доказательство:
hash.c:
#include <stdio.h>
#include <crypt.h>
#define MD5 "$1$"
int main() {
const char string[] = "helloworld";
char * hash = crypt(string, MD5);
printf("%s\n",hash);
return 0;
}
Я компилирую с gcc -o hash hash.c -lcrypt
и запускаю:
./hash
$1$$edK86ZB1Vvaz2eneY.itb.
Из моих знаний о UNIX системах, Формат вывода crypt совпадает с форматом пароля UNIX пользователей, тогда как первая часть - это ha sh ID / тип, вторая часть - это соль, а третья - это действительное га sh - $id$salt$hash
. Тем не менее, АКТУАЛЬНЫЙ стандарт MD5 га sh из helloworld
составляет fc5e038d38a57032085441e7fe7010b0
. Есть ли способ произвести это ха sh, используя crypt()
? Большое спасибо!