Я пытаюсь проверить хеш, сгенерированный python, используя passlib (https://passlib.readthedocs.io/en/stable/lib/passlib.hash.sha256_crypt.html) в C-коде, используя openssl / sha.h.
Для пароля "senhateste" Python passlib имеетсгенерировал следующий хеш:
$5$rounds=535000$e.cy1Y7iWc0OQjNC$7QbwABQMlBdHHd.UURPF.eoc0VTGOtM7yxxrOIe4OxC
, где есть число раундов, соль и контрольная сумма (разделенные $).
Я пытался сгенерировать хеш для необработанного пароляв C, чтобы сравнить с тем, что генерируется кодом Python, но я получил только массив байтов (как и те, что есть в хэш-инструментах sha256 онлайн).
Я думал создать цикл, хэширующий пароль для того же самогоколичество раундов, предоставленных Pyhton. Но я не могу понять, где я должен использовать соль.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <openssl/sha.h>
int main (void) {
int i;
unsigned char s[] = "senhateste";
unsigned char *d = (unsigned char *) malloc(SHA256_DIGEST_LENGTH);
SHA256(s,strlen((char*)s), d);
for(i=0;i<SHA256_DIGEST_LENGTH;i++)
{
printf("%02x",d[i]);
}
printf("\n");
free(d);
return 0;
}
Любое предложение?