2010-06-20 1 views
0

Эй, там. У меня возникла очень странная проблема с созданием хэшей sha256. Я сделал простую консольную программу C, которая принимает путь к файлу в качестве аргумента и использует автономный код sha256, который можно найти here. Я скомпилировал программу, используя MinGW 5.1.6 для Windows 7 x64.Windows C SHA256 Неверное сообщение об генерации

При тестировании программы на файл результирующий хеш ошибочен. Я убедился в этом, используя md5deep на файле, а затем используя sha256sum на файл под Linux. Я также проверял, что это не код, скомпилировав и запустив тот же код в моем ящике Linux с тем же файлом; хэш, который он произвел, был идентичен тем, которые были произведены md5deep и sha256sum.

Я также адаптировал реализацию sha256 от Aaron Gifford в другую версию моей простой программы и снова выполнил тест как на Windows, так и на Linux и в итоге получил тот же результат.

Возможно ли, что проблема вызвана флагами компилятора, которые не были включены?

Мои знания о C не удивительны, и мои знания в отношении параметров компилятора еще хуже, поэтому любая помощь была бы любезно оценена.

Код для простой программы ниже:

#include <stdio.h> 
#include "sha256.h" 

#define BUFLEN 16384 

int main(int argc, char *argv[]) { 
    sha256_context ctx256; 
    sha256_starts(&ctx256); 
    int kl, l, fd; 
    unsigned char buf[BUFLEN]; 
    FILE *file = (FILE*) 0; 
    char *filepath; 

    fd = fileno(stdin); 

    filepath = argv[1]; 
    file = fopen(filepath, "r"); 

    fd = fileno(file); 
    while ((l = read(fd, buf, BUFLEN)) > 0) { 
     kl += l; 
     sha256_update(&ctx256, buf, l); 
    } 
    fclose(file); 
    uint8 sha256sum[32]; 
    sha256_finish(&ctx256, sha256sum); 
    int i; 
    for (i = 0; i < 32; i++) { 
     printf("%02x", sha256sum[i]); 
    } 
    printf("\n"); 

    return 0; 
} 
+2

Вы должны действительно открыть файл в двоичном режиме («rb»), чтобы разные концы строк не вызывали проблем. – Luke

+0

Можете ли вы поверить, что это исправлено? Я был так близок к коду, что режимы файлов полностью перевернулись. Спасибо, что заметили! – KC89

ответ