strcmp()unsigned char到文件中的字符串

问题描述 投票:1回答:1

我需要一种方法,通过该方法可以将此哈希函数的输出与驻留在单独文件中的字符串进行比较,但输出通常定义为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]);存储) - 这位于注释所在的位置。先感谢您。

c arrays hash file-io strcmp
1个回答
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]

© www.soinside.com 2019 - 2024. All rights reserved.