簡體   English   中英

無法通過openssl以與crypt,mkpasswd或openssl通過cmdline相同的格式通過openssl獲取密碼哈希

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM