2014年02月07日 星期五 09:01
GLib库的Data Checksums模块提供了MD5、SHA1、SHA256等哈希算法,并提供增量模式与单步模式两种API,使用非常方便。
代码示例如下:
#include <stdio.h> #include <glib.h> #include <string.h> #include <stdlib.h> int main(int argc,char **argv) { if(argc != 3) { fprintf(stderr,"usage: %s \ type(md5|sha1|sha256) \ filename\n",argv[0]); return -1; } GChecksumType type; if(strcmp("md5",argv[1]) == 0) { type=G_CHECKSUM_MD5; } else if (strcmp("sha1",argv[1]) == 0) { type=G_CHECKSUM_SHA1; } else if (strcmp("sha256",argv[1]) == 0) { type=G_CHECKSUM_SHA256; } else { type=G_CHECKSUM_MD5; } char *filename=argv[2]; FILE *fp=fopen(filename,"r"); if(!fp) { perror("fopen"); return -2; } GChecksum *sum=g_checksum_new(type); char *buf=g_slice_alloc0(1024); size_t n=0; while(!feof(fp)) { n=fread(buf,1,1024,fp); g_checksum_update(sum,buf,n); } printf("%s\n",g_checksum_get_string(sum)); g_checksum_free(sum); g_slice_free1(1024,buf); fclose(fp); return 0; }
参考资料:
https://developer.gnome.org/glib/2.39/glib-Data-Checksums.html
Zeuux © 2024
京ICP备05028076号