Strcmp无法(似乎)将相同的字符串识别为相同的字符串

时间:2019-04-13 13:49:59

标签: c string strcmp nul

我在使strcmp正常工作时遇到了一些困难,并确定文件内的字符和文件外的计算哈希值的字符是相同的。在眼睛上,弦是相同的。我以为这是因为没有终止NUL,但是我不确定是哪种/如何解决合并NUL终结者的罪魁祸首。

                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){
                  FILE *ftest2=fopen(hashOutBuf, "wt");
                  for(i = 0; i < SHA512_DIGEST_LENGTH; i++){
                    fprintf(ftest2, "%02x", c[i]);
                  }
                  fclose(ftest2);
                  fclose(ftest);
                }
                else{
                  FILE *ftest2=fopen(hashOutBuf, "rb");
                  for(i = 0; i < SHA512_DIGEST_LENGTH; i++){
                    sprintf(&file512[i*2], "%02x", c[i]);
                  }
                  //printf("%s", file512);
                  if(!strcmp(hashOutBuf, file512)){
                    printf("Hash matches\n");
                  }
                  else{
                    printf("%s", file512);
                    printf("Hash does not match\n");
                  }
                  fclose(ftest2);
                  fclose(ftest);
                }

名为file123.c的文件的输出为: 60f879492baeacb7c8d8860cec5a477e8f495b81cbea776f4e75b5cb5fea3eda43500b8cc59daba4d0d43c27c2244a00cb91bdde01c5684f2bd5e84b14f18e4e

else语句的输出(计算同一文件的哈希值)为: 60f879492baeacb7c8d8860cec5a477e8f495b81cbea776f4e75b5cb5fea3eda43500b8cc59daba4d0d43c27c2244a00cb91bdde01c5684f2bd5e84b14f18e4e

^相同(至少在眼睛上..)。

0 个答案:

没有答案