Strcmp не распознает (казалось бы) идентичные строки как идентичные - PullRequest
0 голосов
/ 13 апреля 2019

Я испытываю некоторые трудности в том, чтобы заставить 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

1007 * выход еще заявления, вычисления хэш для того же файла, является:. 60f879492baeacb7c8d8860cec5a477e8f495b81cbea776f4e75b5cb5fea3eda43500b8cc59daba4d0d43c27c2244a00cb91bdde01c5684f2bd5e84b14f18e4e 1009 * ^ идентичны (на глаз, по крайней мере ..)
...