2008-09-22 5 views

답변

6

을 사용 입심에 내장 된 MD5, SHA1, 및 GChecksum와 SHA256 구현. IO 스트림에서 체크섬을 구성하는 내장 함수가 없지만 간단한 10 행을 쓸 수 있으며 어쨌든 복잡한 코드를 작성해야합니다.

2

당신은 일반적으로 당신이 매우 좋은 이유가없는 ... 라이브러리 접착제 물건을 직접 할

void get_channel_md5(GIOChannel* channel, unsigned char output[16]) 
{ 
    md5_context ctx; 

    gint64 fileSize = <get file size somehow?>; 
    gint64 filePos = 0ll; 

    gsize bufferSize = g_io_channel_get_buffer_size(channel); 
    void* buffer = malloc(bufferSize); 

    md5_starts(&ctx); 

    // hash buffer at a time: 
    while (filePos < fileSize) 
    { 
     gint64 size = fileSize - filePos; 
     if (size > bufferSize) 
      size = bufferSize; 

     g_io_channel_read(channel, buffer); 
     md5_update(&ctx, buffer, (int)size); 

     filePos += bufferSize; 
    } 

    free(buffer); 

    md5_finish(&ctx, output); 
}