2012-04-22 2 views
0

파일에 대해 md5 해시를 계산해야합니다. 필자는 라이브러리를 성공적으로 찾아서 화면에 해시를 인쇄합니다. 해시를 txt 파일에 인쇄해야하지만 몇 가지 문제가 있습니다. 모든 32 비트 해시 중 00 인트 만 인쇄합니다. 이것은 인쇄 기능입니다. 파일을 열고 인쇄 할 줄을 추가하기 만하면 함수의 나머지 부분이 라이브러리에서 나온 것이므로 제대로 작동합니다. 화면에서 해시가 올바른 방식으로 인쇄되기 때문입니다. . md5 "% 02x"fprintf

감사합니다 "는 fprintf와 % 02x 문제의 일종 것 같다

static void MDPrint (mdContext) 
MD5_CTX *mdContext; 
{ 
    int i; 
    FILE *fp; 
    if((fp=fopen("userDatabase.txt", "ab"))==NULL) printf("Error while opening the file..\n"); 
    else { 
    for (i = 0; i < 16; i++) 
      printf ("%02x", mdContext->digest[i]); 
      fprintf(fp, "%02x", mdContext->digest[i]); 
    } 
fclose(fp); 
} 

답변

2

귀하의 문제는 여기입니다.

for (i = 0; i < 16; i++) 
    printf ("%02x", mdContext->digest[i]); 
    fprintf(fp, "%02x", mdContext->digest[i]); 

더 중괄호 만의 printf 라인이 없기 때문에 루프 내부에 두 줄을 만들려면 중괄호를 추가해야합니다.

for (i = 0; i < 16; i++) 
{ 
    printf ("%02x", mdContext->digest[i]); 
    fprintf(fp, "%02x", mdContext->digest[i]); 
} 
+0

오 세상에, 나는 그 큰 것을 알 수 없습니다. 잘못되었습니다. 또는! :) 감사 – phcaze