使用fgets从文件C获取用户名+ salt + hash

时间:2016-04-26 22:32:07

标签: c hash fgets salt

我有一个存储用户名,salt和完全哈希密码的文件。在纯文本文件中,salt和密码只是一堆随机字符。我需要从文件中提取字段并将它们插入到链表中,但我遇到了一些问题。我知道fgets在到达\ n字符时会停止读取一行,但由于某种原因,它没有拾取任何\ n并且它将整个文件读取为1行(我认为)。我添加了“::::::::”来分隔字段。这是文件。

  

mike ::::::::ÉáŠú7þP)°ºËëá|ò=³7åM+å2÷h |gÝ#ayŸ³ÔZ5W§£“û£Éù30Z䶫àÃê3j»Éöœ[fä]¹or!¢§yADÊñ ¿5åùEB%9oŒdi~Ê'7::::::::gÜnmë!5ªv?NPÐæPןÎ*

     

肯:::::::: ^ú«G7áŽzŽüÜÄÍÊ»-Mýeßleõ¥; A€UU“S€Z9   RÃæ«Aæž   Y | ÙE|“€Å”æ@JreQÈGúz6õîxK1ÉÔæBkDáwœòE:“À¥Hâ€;kÕ3:::::::: M¥÷é?`;Ä?p÷÷   7²ìÆÖäM%C

这是我正在使用的功能

void loadFileIntoList (char * filename, FILE* fp){
    unsigned char * hashed;
    unsigned char * salt;
    char * username;
    char line[3000];

if (fp == NULL){
    printf("file could not be opened");
}


while(fgets(line, sizeof(line), fp)){


    username = strtok(line,  "::::::::");


    salt = (unsigned char *)strtok(NULL, "::::::::");


    hashed = (unsigned char *)strtok(NULL, "::::::::");

               //user, pass, salt, hashed. just putting in "" for pass
    addAccount(username, "", salt, hashed);



}




fclose(fp);


}

线的大小可能是它只循环一次的原因,但我不知道我应该知道它应该有多大。

我想在第一个哈希之后或第二个用户名之前需要另一组“::::::::”。但这是我的输出(只是打印行,用户,盐和哈希)

有关如何正确执行此操作的任何见解?

0 个答案:

没有答案