strcmp () символ без знака для строки в файле - PullRequest
1 голос
/ 10 апреля 2019

Мне нужен метод, с помощью которого выходные данные этой хеш-функции можно сравнить со строкой, которая находится в отдельном файле, однако выходные данные обычно определяются как printf("%02x", c[i]); (где комментарий). Этот формат не работает для сравнения, и я не уверен, как настроить этот формат существенно.

            FILE *ftest=fopen(hashInBuf, "rb");
            SHA512_Init (&mdContext);
            while ((bytes = fread (data, 1, 1024, ftest)) != 0)
                SHA512_Update (&mdContext, data, bytes);
            SHA512_Final (c,&mdContext);
            if(access(hashOutBuf, F_OK) != -1){
               for(i = 0; i < SHA512_DIGEST_LENGTH; i++){
                 //METHOD TO COMPARE WITH TO EXISTING HASH FILE (stored in seperate folder)
               }
            }

Строка в файле является выводом этой хеш-функции (хранится с помощью fprintf(*file, "%02x", c[i]);) - это место, где находится комментарий выше. Заранее спасибо.

1 Ответ

2 голосов
/ 10 апреля 2019

Конвертировать каждую пару символов внешней строки в целое число.

const char *external_string = "2435CD76F...";
for(i = 0; i < SHA512_DIGEST_LENGTH; i++) {
  //         v------------------------------------------------v Compound literal (C99) 
  if (strtol((char [3]){external_string[0], external_string[1]}, 0, 16) != data[i]) {
    return Different;
  }
  external_string += 2;
}
return Same;

Застрахуйте data или unsigned char или используйте .... != (unsigned char) data[i]

...