如何在C和ubuntu中使用salt加密SHA512哈希?

问题描述

我正在尝试用salt加密哈希。

在命令行中,我发现使用下面的命令将正确的哈希写入影子文件中。

openssl passwd -6-盐abcd适用 $ 6 $ abcd $ vIWAp1OzuGuo376cRkZ5DXcgI8KIlnUibsk.iydtfCFqb9okOz.S70Ysu7.qRRg9Me5XwAyTjkZBQJXiIxwpL /

然后我尝试使用openssl(How to convert a raw 64-byte binary to Hex or ASCII in C)在C语言中获取它。

#include <openssl/sha.h>
#include <stdio.h>
#include <string.h>

int main() {
        char data[] = "abcdapple";
        unsigned char hash[SHA512_DIGEST_LENGTH*2+1];
        SHA512((unsigned char *)&data,strlen(data),(unsigned char *)&hash);

        char buffer[SHA512_DIGEST_LENGTH*2+1];
        for(int i =0; i < SHA512_DIGEST_LENGTH; ++i)
                sprintf(&buffer[i*2],"%02x",(unsigned int)hash[i]);
        printf("digest: %s\n",buffer);
        printf("\n");
}

但是生成的哈希是ea1d5a8b11297d20f954a3ab15092d21b733484b2eb9b7226b2b138639f0df30627774945458a774eb279cd279d83d2e977a2bc5599606d6a9a3b2f075f9b1895ecd,与正确的事物不同。

我认为我用盐不好。似乎也存在根本问题。 我不能使用C盐实现加密程序吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)