在C中验证SHA256(由python生成)

时间:2019-01-22 20:19:47

标签: python c sha256

我正在尝试使用openssl / sha.h在C代码中使用passlib(https://passlib.readthedocs.io/en/stable/lib/passlib.hash.sha256_crypt.html)验证python生成的哈希。

对于密码“ 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;
}

有什么建议吗?

0 个答案:

没有答案