[英]Cant get password hash via openssl in c same format as crypt, mkpasswd or openssl via cmdline
我需要通过C中的openssl库创建一个哈希密码。不幸的是,我无法获得预期的结果
这是我使用的代码:
unsigned char hash[SHA256_DIGEST_LENGTH];
SHA256_CTX sha256;
SHA256_Init(&sha256);
SHA256_Update(&sha256, "xxx", 3);
SHA256_Update(&sha256, "11111111", 8);
SHA256_Final(hash, &sha256);
for(int i = 0; i < SHA256_DIGEST_LENGTH; i++)
{
printf("%02x", hash[i]);
}
输出将是
57b2e9dd7f27e02ce026c1a40c7685b4658c2dff55e3a9de93186e545d1c4af1
但我期望
EDgBhRzUlXHcobBLtDfoWalyRFoSMnO1 / q.s10aKSY7
由于这是输出,因此crypt库将通过shell生成mkpasswd或openssl。
看到:
mkpasswd -m sha-256 --salt=11111111 xxx
$5$11111111$EDgBhRzUlXHcobBLtDfoWalyRFoSMnO1/q.s10aKSY7
要么
openssl passwd -5 -salt 11111111 xxx
$5$11111111$EDgBhRzUlXHcobBLtDfoWalyRFoSMnO1/q.s10aKSY7
要么
printf("%s\n", crypt("xxx", "$5$11111111"));
// also prints $5$11111111$EDgBhRzUlXHcobBLtDfoWalyRFoSMnO1/q.s10aKSY7
我需要使它与openssl库一起使用。 创建哈希和盐我完全错了吗,还是仅仅是转储格式问题?
该算法不仅是简单的SHA256哈希。
作为参考,可以在github (shacrypt(...))上找到OpenSSL实现。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.