strcmp()将无符号字符转换为文件中的字符串

时间:2019-04-10 11:24:37

标签: c arrays hash file-io strcmp

我需要一个方法,通过该方法可以将此哈希函数的输出与位于单独文件中的字符串进行比较,但是通常将输出定义为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 个答案:

答案 0 :(得分:2)

将外部字符串的每对字符转换为整数。

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;

确保dataunsigned char或使用.... != (unsigned char) data[i]