Проверьте SHA256 (сгенерированный питоном) в C - PullRequest
0 голосов
/ 22 января 2019

Я пытаюсь проверить хеш, сгенерированный 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;
}

Любое предложение?

...