读书人

UNIX下怎么得到一个文件的CheckSum

发布时间: 2012-02-14 19:19:19 作者: rapoo

UNIX下如何得到一个文件的CheckSum
有现成的函数吗?
谢谢

[解决办法]
google.com/codesearch
md5.c
[解决办法]
学习
[解决办法]
所checksum就是一段按字求和,不管是否溢出. 下面的例子checksum果是一字.

.. 易的程序,供考.


#include <stdio.h>
#include <stdlib.h>


unsigned short checksum( unsigned char * bufp, unsigned long buf_len )
{
unsigned short sum = 0;

while( buf_len -- )
{
sum += *(bufp++);
}

return sum;

}


#define BUFFER_SIZE 4096

int main( int ac, char *av[] )
{

unsigned short chksum;
FILE *fp;
unsigned char buf[ BUFFER_SIZE ];
int n_chars;



if( ac != 2 )
{
fprintf( stderr, "Usage : %s target file.\n " );
exit(1);
}

if( ( fp = fopen( av[1], "rb " ) ) == NULL )
{
fprintf( stderr, "Open file fail! " );
perror( av[1] );
exit(1);
}

chksum = 0;

while( (n_chars = fread( buf , 1, BUFFER_SIZE, fp) ) > 0 )
{
chksum += checksum( buf, n_chars );
}

if( n_chars == -1 )
{
fprintf( stderr, "Read file fail! " );
perror( av[1] );
exit(1);
}

printf( " Checksum of file \ " %s \ " is 0x%04x \n " , av[1], chksum );

return 0;

}

读书人网 >C语言

热点推荐