Не могу получить хеш пароля через openssl в том же формате, что и crypt, mkpasswd или openssl через cmdline - PullRequest
0 голосов
/ 08 октября 2018

Мне нужно создать хешированный пароль через openssl lib в C. К сожалению, я не могу получить ожидаемый результат

Это код, который я использую:

unsigned char hash[SHA256_DIGEST_LENGTH];
SHA256_CTX sha256;
SHA256_Init(&sha256);
SHA256_Update(&sha256, "xxx", 3);
SHA256_Update(&sha256, "11111111", 8);
SHA256_Final(hash, &sha256);

for(int i = 0; i < SHA256_DIGEST_LENGTH; i++)
{
    printf("%02x", hash[i]);
}

Выходная информация будет

57b2e9dd7f27e02ce026c1a40c7685b4658c2dff55e3a9de93186e545d1c4af1

, но я ожидаю

130HF1017 *, так как это вывод, который библиотека crypt будет производить, а также mkpasswd или openssl через shell.

См .:

mkpasswd -m sha-256 --salt=11111111 xxx
$5$11111111$EDgBhRzUlXHcobBLtDfoWalyRFoSMnO1/q.s10aKSY7

или

openssl passwd -5 -salt 11111111 xxx
$5$11111111$EDgBhRzUlXHcobBLtDfoWalyRFoSMnO1/q.s10aKSY7

или

printf("%s\n", crypt("xxx", "$5$11111111"));
// also prints $5$11111111$EDgBhRzUlXHcobBLtDfoWalyRFoSMnO1/q.s10aKSY7

Мне нужно, чтобы это работало с библиотекой openssl.Я совершенно не прав с созданием хэша и соли, или это просто проблема форматирования дампа?

1 Ответ

0 голосов
/ 08 октября 2018

Алгоритм - это не просто хэш SHA256.

В качестве ссылки можно найти реализацию OpenSSL на github (shacrypt (...)).

...