簡體   English   中英

如何在 C 的地穴 function 中使用可變鹽?

[英]How can I make a variable salt to be used in the crypt function in C?

作為一項任務,我必須找到從該密碼的 hash 開始的用戶密碼(使用 crypt 制作)。 因此,我正在嘗試創建一個變量 salt(2 字母字符串),然后我傾向於在 crypt function 中使用它,直到結果與 hash 匹配。 但是,當我嘗試制作這個變量 salt,而不是兩個字符時,我得到 5/6(即使我將 salt 定義為大小為 2 的數組)。 有誰知道如何解決這個問題? 我知道很難解釋,但請參閱下面的代碼(和結果)。

char salt[2];
for (int i = 65; i < 91; i++)
{
    salt[0] = i;
    for (int j = 65; j < 91; j++)
    {
        salt[1] = j;
        printf("%s\n", salt);
    }
}

結果:AA →g AB →g AC →g AD →g AE →g AF →g... ... ... ZW →g ZX →g ZY →g ZZ →g

這些額外的字符 (= �g) 是從哪里來的?

謝謝

您正在嘗試將salt打印為字符串,但實際上並沒有字符串。 您有一個包含兩個字符的數組。 字符串由 null 字節終止。 通過將此數組傳遞給printf ,它會嘗試讀取數組末尾以查找值為 0 的字節。讀取數組末尾會調用未定義的行為,在這種情況下表現為打印額外字符。

您需要在數組中為 null 終結器添加空間:

char salt[3];
salt[2] = 0;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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