首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Linux ++中文件的md5sum

Linux ++中文件的md5sum
EN

Stack Overflow用户
提问于 2010-08-03 18:37:21
回答 5查看 38.6K关注 0票数 25

我想在Linux中找到一个文件的md5sum,有没有可以发送文件名的API来获取该文件的md5sum。

EN

回答 5

Stack Overflow用户

发布于 2010-08-03 18:39:40

代码是here

此外,openssl库具有(来自here的) md5函数:

代码语言:javascript
复制
#include <openssl/md5.h>
#include <unistd.h>
int main()
{
    int n;
    MD5_CTX c;
    char buf[512];
    ssize_t bytes;
    unsigned char out[MD5_DIGEST_LENGTH];

    MD5_Init(&c);
    bytes=read(STDIN_FILENO, buf, 512);
    while(bytes > 0)
    {
        MD5_Update(&c, buf, bytes);
        bytes=read(STDIN_FILENO, buf, 512);
    }

    MD5_Final(out, &c);

    for(n=0; n<MD5_DIGEST_LENGTH; n++)
        printf("%02x", out[n]);
    printf("\n");

    return(0);        
}
票数 36
EN

Stack Overflow用户

发布于 2010-08-03 18:44:34

您可以使用popen运行md5sum并读取输出:

代码语言:javascript
复制
#include <stdio.h>
#include <ctype.h>

#define STR_VALUE(val) #val
#define STR(name) STR_VALUE(name)

#define PATH_LEN 256
#define MD5_LEN 32

int CalcFileMD5(char *file_name, char *md5_sum)
{
    #define MD5SUM_CMD_FMT "md5sum %." STR(PATH_LEN) "s 2>/dev/null"
    char cmd[PATH_LEN + sizeof (MD5SUM_CMD_FMT)];
    sprintf(cmd, MD5SUM_CMD_FMT, file_name);
    #undef MD5SUM_CMD_FMT

    FILE *p = popen(cmd, "r");
    if (p == NULL) return 0;

    int i, ch;
    for (i = 0; i < MD5_LEN && isxdigit(ch = fgetc(p)); i++) {
        *md5_sum++ = ch;
    }

    *md5_sum = '\0';
    pclose(p);
    return i == MD5_LEN;
}

int main(int argc, char *argv[])
{
    char md5[MD5_LEN + 1];

    if (!CalcFileMD5("~/testfile", md5)) {
        puts("Error occured!");
    } else {
        printf("Success! MD5 sum is: %s\n", md5);
    }
}
票数 15
EN

Stack Overflow用户

发布于 2013-03-21 20:41:22

您可以使用mhash库(许可为LGPL)。在Debian系统上:

代码语言:javascript
复制
sudo apt-get install libmhash-dev

请参见手册页man 3 mhash

但我认为你不能仅仅给它一个文件名。您必须自己打开文件,读取数据,并将数据提供给这个库的函数。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3395690

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档