我正在尝试使用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;
}
有什么建议吗?