【发布时间】:2021-02-15 03:26:04
【问题描述】:
我正在尝试用盐加密哈希。
在命令行中,我使用以下命令在影子文件中找到了正确的哈希值。
openssl passwd -6 -salt abcd appple $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");
}
但生成的哈希是 ea1d5a8b11297d20f954a3ab15092d21b733484b2eb9b7226b2b138639f0df30627774945458a774eb279cd83d2e977a2bc5599606d6a9a3b2f075f9b189
我认为我没有很好地使用盐。似乎还有一个根本问题。 我不能用 C 实现加盐的加密程序吗?
【问题讨论】:
-
你不会“加密”散列,不管有没有盐,首先...
-
@AKX 你的意思是它只是创建一个哈希?
-
不,你不能只是连接。注意哈希的开头。
$6$abcd$。 6 对应于您的命令中的-6,之后您就有了明文形式的盐。 -
@klutt 如果我可以使用盐计算哈希,我不能在创建哈希之前连接 $6$abcd$ 吗?
-
@Guk 不知道。我刚刚告诉你为什么你的方法不起作用。 :)