精华内容
下载资源
问答
  • 2021-05-12 06:24:53

    前言

    在网络传输、设备之间转存、复制大文件等时,可能会出现传输前后数据不一致的情况。这种情况在网络这种相对更不稳定的环境中,容易出现。那么校验文件的完整性,也是势在必行的。

    使用说明

    md5sum命令用于生成和校验文件的md5值。它会逐位对文件的内容进行校验。是文件的内容,与文件名无关,也就是文件内容相同,其md5值相同。md5值是一个128位的二进制数据,转换成16进制则是32(128/4)位的进制值。

    md5校验,有很小的概率不同的文件生成的md5可能相同。比md5更安全的校验算法还有SHA*系列的。

    在网络传输时,我们校验源文件获得其md5sum,传输完毕后,校验其目标文件,并对比如果源文件和目标文件md5 一致的话,则表示文件传输无异常。否则说明文件在传输过程中未正确传输。

    重要的选项:

    -b 以二进制模式读入文件内容

    -t 以文本模式读入文件内容

    -c 根据已生成的md5值,对现存文件进行校验

    --status 校验完成后,不生成错误或正确的提示信息,可以通过命令的返回值来判断。

    使用举例

    生成文件md5值

    md5sum file

    1: [[email protected] lianxi]# md5sum data

    2: 0a6de444981b68d6a049053296491e49 data

    使用通配对多个文件进行md5

    1: [[email protected] lianxi]# md5sum *

    2: 0a6de444981b68d6a049053296491e49 data

    3: 13df384c47dd2638fd923f60c40224c6 data2

    md5sum校验的是文件内容,与文件名无关

    相同内容的文件的md5一样。如下我先对文件进行复制,然后对同内容不同名的文件进行md5,md5值一样

    1: [[email protected] lianxi]# cp data data.bak

    3: data data.bak

    4: [[email protected] lianxi]# md5sum *

    5: 0a6de444981b68d6a049053296491e49 data

    6: 0a6de444981b68d6a049053296491e49 data.bak

    以文本模式或二进制模式读入文件并对其进行校验

    -b 以二进制模式读入内容

    -t 以文本模式读入文件内容进行校验

    虽然是不同的读入模式,但是在进行求md5的时候,是一样的,因为是逐位校验的。

    如下文本文件,无论通过哪种模式读取md5都一致。

    1: [[email protected] lianxi]# file data

    2: data: ASCII text

    3: [[email protected] lianxi]# md5sum data

    4: 0a6de444981b68d6a049053296491e49 data

    5: [[email protected] lianxi]# md5sum -b data

    6: 0a6de444981b68d6a049053296491e49 *data

    7: [[email protected] lianxi]# md5sum -t data

    8: 0a6de444981b68d6a049053296491e49 data

    md5值重定向

    将生成md5值重定向到指定的文件,通常文件的扩展名我们会命为.md5

    1: [[email protected] lianxi]# md5sum data > data.md5

    2: [[email protected] lianxi]# md5sum data

    3: 0a6de444981b68d6a049053296491e49 data

    4: [[email protected] lianxi]# cat data.md5

    5: 0a6de444981b68d6a049053296491e49 data

    将多个文件的md5重定向到指定的文件

    每个文件的md5生成为一行

    2: data data.bak data.md5 d.md5

    3: [[email protected] lianxi]# md5sum data* > d.md5

    4: [[email protected] lianxi]# cat d.md5

    5: 0a6de444981b68d6a049053296491e49 data

    6: 0a6de444981b68d6a049053296491e49 data.bak

    7: 0bd94658869c53cdcdf35a0f7de93e01 data.md5

    重定向追加

    这里新增文件ls,单独求其md5,将其md5追加到文件中

    1: [[email protected] lianxi]# cp /bin/ls .

    3: data data.bak data.md5 d.md5 ls

    4: [[email protected] lianxi]# md5sum ls >> d.md5

    5: [[email protected] lianxi]# cat d.md5

    6: 0a6de444981b68d6a049053296491e49 data

    7: 0a6de444981b68d6a049053296491e49 data.bak

    8: 0bd94658869c53cdcdf35a0f7de93e01 data.md5

    9: c6337b20f3c159544bff5cf622391f9e ls

    md5校验

    -c选项来对文件md5进行校验。校验时,根据已生成的md5来进行校验。生成当前文件的md5,并和之前已经生成的md5进行对比,如果一致,则返回OK,否则返回错误信息

    md5sum –c d.md5

    1: [[email protected] lianxi]# md5sum -c d.md5

    2: data: OK

    3: data.bak: OK

    4: data.md5: OK

    5: ls: OK

    修改文件后,文件md5变化

    2: data

    3: [[email protected] lianxi]# md5sum data

    4: 2360752c3368ca4f89169f5ecc06e383 data

    5: [[email protected] lianxi]# md5sum data > data.md5

    6: [[email protected] lianxi]# echo "lwg" >> data

    7: [[email protected] lianxi]# md5sum data

    8: 287d237083a42f09785daa46a5fa3afe data

    9: [[email protected] lianxi]# md5sum -c data.md5

    10: data: FAILED

    11: md5sum: WARNING: 1 of 1 computed checksum did NOT match

    --status,不显示校验信息,以命令返回值来判断

    校验一致返回0,不一致返回1

    1: [[email protected] lianxi]# md5sum -c data.md5

    2: data: FAILED

    3: md5sum: WARNING: 1 of 1 computed checksum did NOT match

    4: [[email protected] lianxi]# md5sum -c --status data.md5

    5: [[email protected] lianxi]# echo $?

    6: 1

    多个文件文件校验和grep连用

    通过grep将正确的信息过滤掉

    1: [[email protected] lianxi]# md5sum -c ../value.md5

    2: acpid: OK

    3: acpid.1: OK

    4: anaconda.log: OK

    5: anaconda.syslog: OK

    6: anaconda.xlog: OK

    7: boot.log: OK

    8: boot.log.1: OK

    9: ...

    10: ...

    11: 省略中间部分

    12: ...

    13: ...

    14: yum.log.2: OK

    15: md5sum: WARNING: 1 of 56 computed checksums did NOT match

    1: [[email protected] lianxi]# md5sum -c ../value.md5 | grep -v OK

    2: md5sum: WARNING: 1 of 56 computed checksums did NOT match

    3: cron.1: FAILED

    特殊说明

    1)md5sum 是校验文件内容,与文件名是否相同无关

    2)md5sum值逐位校验,所以文件越大,校验时间越长。

    总结

    通过md5sum来校验生成文件校验码,来发现文件传输(网络传输、复制、本地不同设备间的传输)异常造成的文件内容不一致的情况。

    更多相关内容
  • WinMD5sum 是一个 MD5sum 工具,适用于那些需要一个小而简单的工具来获取和的人。它具有 GUI 外观并保持很小(仅 40KB)。仅在 Windows 平台上运行。亮点是它可以处理非常大的文件(超过TB),而且速度够快。享受吧...
  • windows下的md5sum

    2019-01-24 11:09:45
    windows平台下的md5sum, 跟linux下的md5sum算出来的一模一样. 单文件, 直接在命令行下使用.
  • md5sum.exe

    2019-10-09 11:48:25
    Windows系统文件md5计算工具,md5sum命令。下载保存到C:\Windows或其他环境变量目录。
  • 主要介绍了Linux md5sum命令的使用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • md5sum源码

    2018-01-09 17:03:43
    跟linux当中的md5sum命令相同,但需要重新编译,gcc -ott md5sum.c
  • md5sum命令 校验文件

    2021-01-20 15:00:30
    md5sum命令用于生成和校验文件的md5值。它会逐位对文件的内容进行校验。是文件的内容,与文件名无关,也就是文件内容相同,其md5值相同。 md5值是一个128位的二进制数据,转换成16进制则是32(128/4)位的进制值。 ...
  • md5sum

    2022-04-28 10:34:03
    NAME md5sum - 计算检验MD5效验码 总览 (SYNOPSIS) ../src/md5sum [OPTION] [FILE]... ../src/md5sum [OPTION] --check [FILE] 描述 (DESCRIPTION) 显示 或 检验 MD5 效验码. 如果 没有 FILE 或者 FILE 是 - 时...

    1.md5sum命令的作用

    主要是用于验证网络文件传输的完整性,防止文件被篡改。主要是因为在网络环境不稳定的情况下,传输的文件很有可能会发生前后数据不一致的情况.

    2.md5sum命令的原理

    采用MD5报文摘要算法(128位) 计算和检查文件的校验和。只会逐位对文件的内容进行校验,与文件名无关。当文件内容相同时,md5值也是相同的。md5值是一个128位的二进制数据,转换成16进制则是32位的进制值。

    注意: md5校验,有很小的概率不同的文件生成的md5可能相同,但大概率是可以大概检测文件的完整性.

    3.手册 

    
    NAME  md5sum - 计算检验MD5效验码
    
    总览 (SYNOPSIS)
           ../src/md5sum [OPTION] [FILE]...
           ../src/md5sum [OPTION] --check [FILE]
    
    描述 (DESCRIPTION)
           显示或检验MD5效验码. 如果没有FILE或者FILE是-时,就从标准输入读入.
           -b, --binary  以 二进制 模式 读入 文件 (DOS/Windows 下 默认)
           -c, --check   对 给定 的 文件 检验 MD5 效验码
           -t, --text    以 文本 模式 读入 文件 (默认)
    
     下面的两个选项只在检验效验码时用:
           --status  不显示 任何 输出, 用 返回码 表示 成功 与否
           -w, --warn 对于错误的MD5效验码行的格式发出警告
           --help     显示这个帮助然后退出
           --version  显示版本信息然后退出
    

    展开全文
  • 主要介绍了Ruby遍历文件夹同时计算文件的md5sum,本文直接给出实现代码,需要的朋友可以参考下
  • MD5sum 是一个小实用程序,可帮助您计算给定字符串的 128 位 MD5 哈希值,如 RFC 1321 中所述。
  • WinMD5sum是一款MD5sum工具,适合那些需要小型且简单的工具来获取总和的用户,它具有GUI外观并保持小巧(仅40KB)。仅在Windows平台上运行。重点是它可以处理非常大的文件(超过TB),速度足够快。尽情享受吧!
  • 主要介绍了Python中使用md5sum检查目录中相同文件代码分享,本文直接给出实现代码,需要的朋友可以参考下
  • md5sum_c.zip

    2019-10-10 09:42:55
    md5sum命令源码 直接下载就可使用 亲测好用 代码清晰
  • md5sum工具好用

    2019-04-05 13:03:20
    window上的md5sum计算,很好用,非常稳定方便
  • md5sum.zip

    2019-12-23 13:24:42
    基于vs2017 ,创建的MFC工程,支持打开文件和文件夹,支持拖动多个文件/文件夹识别,并可生成md5码。
  • md5sum:OSX 的 md5sum 命令

    2021-06-22 22:45:16
    OSX 的 md5sum 安装 sudo curl https://raw.githubusercontent.com/eexit/md5sum/master/md5sum -o /sbin/md5sum sudo chmod a+x /sbin/md5sum 用法 概要 md5sum [-q] source_file md5sum [-v] [-h] 读取文件中的 ...
  • windows_md5sum_命令行计算文件md5
  • md5sum sha1sum for windows 微软官方md5sum和sha1sum工具,校验速度很快。
  • md5sum校验工具

    2013-12-02 15:47:11
    md5sum汉化版,文件校验,文件md5码比较。
  • md5sum 在Linux下,我们经常使用md5sum命令来查看两个文件是否相同。 md5sum命令会逐位对文件的内容进行校验。是文件的内容,与文件名无关,也就是文件内容相同,其md5值相同。 存在两个文件不同,但md5sum相同的...

    md5sum


    在Linux下,我们经常使用md5sum命令来查看两个文件是否相同。

    md5sum命令会逐位对文件的内容进行校验。是文件的内容,与文件名无关,也就是文件内容相同,其md5值相同。

    存在两个文件不同,但md5sum相同的情况。不过这个情况出现的概率还是很低的,所以md5值仍然是常用的方法。

    md5值是一个128位的二进制数据,转换成16进制则是32(128/4)位的进制值。

    如果对结果的准确性要求极高,可以使用sha系列算法,比如SHA1、SHA256、SHA384、SHA512等。

    如前所述,直接对文件名运行md5sum命令,它计算的是文件内容的md5值,那么如何对指定字符串求md5值呢?

    shell


    在Linux上运行md5sum命令可得到文件内容的md5值:

    % cat a.csv
    abc
    
    % md5sum a.csv 
    0bee89b07a248e27c83fc3d5951213c1  a.csv
    
    % cp a.csv b.csv
    
    % md5sum b.csv 
    0bee89b07a248e27c83fc3d5951213c1  b.csv
    

    如上,两个文件名不同,但文件内容相同,所以md5sum得到的值相同。

    如果想对指定字符串计算md5,可以借助管道:

    % echo abc | md5sum
    0bee89b07a248e27c83fc3d5951213c1  -
    
    % echo abc | md5sum | cut -d ' ' -f 1
    0bee89b07a248e27c83fc3d5951213c1
    

    注意,echo命令默认是带换行符的,使用-n参数只计算看到的字符串的md5:

    % echo -n abc | md5sum | cut -d ' ' -f 1
    900150983cd24fb0d6963f7d28e17f72
    

    这样就可以计算任意给定字符串的md5了,脚本如下:

    # 计算目录下所有zip文件名的md5值
    #!/bin/bash
    
    function filename2md5sum()
    {
        sum=$(echo -n $1 | md5sum | cut -d ' ' -f 1)
        echo $sum
    }
    
    function change_filenames()
    {
        count=0
        for file in *.zip
        do
            if test -f $file; then
                echo $file: 
                filename2md5sum $file
                ret=$?
                if [ $ret -eq 0 ]; then
                    count=$(($count+1))
                fi
            fi
        done
    
        echo $count 个文件名已输出
    }
    
    change_filenames
    

    python


    使用hashlib,直接上代码了:

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    
    import hashlib
    import os
    from pathlib import Path
     
    def get_md5_value(src):
        md5 = hashlib.md5()
        md5.update(src)
        md5sum = md5.hexdigest()
        return md5sum
    
    def main():
        basedir = '.'
        for root, ds, fs in os.walk(basedir):
            for f in fs:
                if f.endswith('.zip'):
                		# use encode by utf-8 avoid error: Unicode-objects must be encoded before hashing
                    md5sum = get_md5_value(f.encode('utf-8'))
                    print('file: {}\n{}'.format(f,md5sum))
    if __name__== '__main__':
        main()
    

    c++


    使用popen得到命令行执行的输出结果,代码如下:

    #include <string>
    #include <iostream>
    
    using namespace std;
    
    string get_md5sum(const string& filename) {
      string md5string;
      string cmd = "echo -n '" + filename + "' | md5sum | cut -d ' ' -f 1";
      FILE* pipe = popen(cmd.c_str(), "r");
      if (pipe != NULL) {
        static const unsigned md5size = 32;
        unsigned char md5res[md5size + 1];
        int readSize = fread((void*)md5res, sizeof(char), md5size, pipe);
        pclose(pipe);
        if (readSize != md5size) {
          std::cout << "Error reading md5" << std::endl;
          return md5string;
        }
        md5res[md5size] = 0;
        md5string.assign(&md5res[0], &md5res[md5size]);
      }
    
      return md5string;
    }
    
    int main(int argc, char* argv[]) {
      if (argc != 2) {
        cout << "Usage: " << argv[0] << " string4md5sum" << endl;
        return 0;
      }
    
      string filename = argv[1];
      cout << get_md5sum(filename) << endl;
      return 0;
    }
    

    小节


    只要在一种平台下把它原理搞清楚,在其他平台复现只是熟悉程度的问题了。

    这只是一个小demo,可以在此基础上进行扩展,实现更具意义的功能了。

    展开全文
  • 也可以一次生成多个文件的md5值:md5sum file_name1 file_name2 file_name3 ……将生成的md5值保存到文件(同上,可以对一个文件生成md5文件,也可以一次对多个文件进行生成,也可以通过 *.sh、*.py 进行匹配生成md5...

    生成md5值

    随便找个文件执行:md5sum file_name

    即可生成该文件对应md5值。

    f6f68189ccac8694df28c4520dbdcf6b.png

    也可以一次生成多个文件的md5值:md5sum file_name1 file_name2 file_name3 ……

    50397dc73e0e2ce90e90145e84e9963e.png

    将生成的md5值保存到文件

    (同上,可以对一个文件生成md5文件,也可以一次对多个文件进行生成,也可以通过 *.sh、*.py 进行匹配生成md5文件)

    0fd5ea05657d4664fd80d5e58fc463d7.png

    校验MD5文件

    执行命令:md5sum -c xxx.md5

    xxx.md5 文件里存储的是 md5 值和其对应的文件名,执行 md5sum -c xxx.md5 时,会将md5值和文件进行核对校验。

    71b413db8fcc2d6d12c257bfaa698a2b.png

    参数

    ae4569b2f8a2bdb4ca69f3012474d128.png

    linux下使用sha256sum生成sha256校验文件,并校验其一致性

    [root@localhost ]# " >test.zip 生成sha256文件校验文件 [root@localhost ]# sha256sum test.zip >test ...

    Linux下动态库生成和使用

    Linux下动态库生成和使用 一.动态库的基本概念 1.动态链接库是程序运行时加载的库,当动态链接库正确安装后,所有的程序都可以使用动态库来运行程序.动态链接库是目标文件的集合,目标文件在动态链接库中 ...

    Linux下静态库生成和使用

    Linux下静态库生成和使用 一.静态库概念 1.库是预编译的目标文件(object  files)的集合,它们可以被链接进程序.静态库以后缀为”.a”的特殊的存档(archive file)存储. ...

    linux 下C语言编程库文件处理与Makefile编写

    做开发快3年了,在linux下编译安装软件算是家常便饭了.就拿gcc来说,都有不下10次了,可基本每次都会碰到些奇奇怪怪的问题.看来还是像vs.codeblocks这样的ide把人弄蠢了.便下定决心一 ...

    Linux下自动清除MySQL日志文件

    MySQL运行过程中会生成大量的日志文件,占用不少空间,修改my.cnf文件配置bin-log过期时间,在Linux下自动清除MySQL日志文件 [mysqld] expire-logs-days= ...

    Linux下用rm删除的文件的恢复方法

    Linux下用rm删除的文件的恢复方法_Linux教程_Linux公社-Linux系统门户网站https://www.linuxidc.com/Linux/2008-08/14744.htm linu ...

    linux下查找指定后缀的文件

    1.linux下查找指定后缀的文件 例如查找当前目录下的所有后缀名时.c或.h的文件 find  .  -type f -regex  ".*\.\(c\|h\)"

    Linux下的文件结构&comma;及对应文件夹的作用

    Linux下的文件结构,及对应文件夹的作用 /bin 二进制可执行命令 /dev 设备特殊文件 /etc 系统管理和配置文件 /etc/rc.d 启动的配置文件和脚本 /home 用户主目录的基点,比 ...

    linux下添加用户并将文件夹授权给某一个用户

    ### linux下添加用户并将文件夹授权给某一个用户 背景:在做一个项目时,需要外包的前端人员调试测试环境的页面,但是又不能给他服务器的账号信息,就在服务器上新添加一个子账户,再给这个账户项目文件的 ...

    随机推荐

    Linux 基础笔记

    1    vim /etc/inittab     linux配置文件,这个文件负责设置init初始化程序初始化脚本在哪里;2    passwd    修改密码2.1    passwd xxx   ...

    HTTPWatch使用

    注意:现在httpwatch也可以集成到火狐浏览器中. 一.介绍 HttpWatch是强大的网页数据分析工具.集成在Internet Explorer工具栏.包括网页摘要.Cookies管理.缓存管理 ...

    &lbrack;Js&rsqb;Ajax

    一.什么是Ajax 不刷新的情况下读取数据或提交数据 (最早出现ajax:谷歌地图,拖动一下出现一片新的视野) 应用:用户注册.在线聊天.微博 特性:只能从服务器上去读取数据(所以我们需要配置自己的服 ...

    HDU 1165 Eddy&&num;39&semi;s research II

    题意:已知,求A(m, n). 分析:根据样例模拟一下过程就可以找出递推关系. #include #include #include

    Oracle的回收站和闪回查询机制&lpar;一&rpar;

    实际工作中,我们经常会遇到一些情况,误删除某些表或某些表的某些记录,这时候就需要我们将这些记录重新插入进去.如何才能解决这个问题呢? Oracle的Flashback query(闪回查询)为我们解决 ...

    dmesg 信息实时监控其改变

    方法一: 最新的dmesg版本有一个 -w (-w, --follow) 选项,可以实时监控并输出: $ dmesg -wH 方法二: watch -n 0.1 "dmesg | tail ...

    关于php的一些开源程序

    最好用的当属thinksns,目前更新到4.3.4, 社交型网站. 此网站提供大量源码,有时间可以去看看:http://down.admin5.com/

    【前端】HTML中最适合做按钮的元素

    转载请注明出处:http://www.cnblogs.com/shamoyuu/p/6405914.html 可选的可以做按钮的元素有如下几个 a.input.button.div(span等) 场景 ...

    poj2528(线段树&plus;离散化)

    题目链接:https://vjudge.net/problem/POJ-2528 题意:在区间[1,1e7]内染色,依次染n(<=1e4)中颜色,给出每种颜色染色的范围,可重叠,求最终有多少种颜 ...

    BP神经网络 详解模板

    %原始数据输入 P=[ - 6.142 - 27.5 5.068 - 31.7 5.196 - 34.1 6.362 - 31.54 6.472 - 30.17 6.578 - 29.53 6.351 ...

    展开全文
  • md5sum linux 下的代码实现 usage: md5sum [-bv] [-c [file]] | [file...] Generates or checks MD5 Message Digests -c check message digests (default is generate) -v verbose, print file names when ...
  • md5(md5sum).rar

    2014-10-24 18:13:08
    linux 下 shell命令 ,制作md5码 也用于软件的md5校验 MD5算法常常被用来验证网络文件传输的完整性,防止文件被人篡改。
  • linux md5sum 的用法

    2021-05-12 08:16:30
    linux md5sum的用法适用于 Oracle 用户的技巧md5sum 是一个非常强大的用于安全性实施的命令。您所管理的某些配置文件(如 listener.ora、tnsnames.ora 和 init.ora)对于成功的 Oracle 基础架构非常重要,任何修改都...
  • md5sum的使用

    千次阅读 2021-01-08 11:55:12
    md5sum命令用于生成和校验文件的md5值。它会逐位对文件的内容进行校验。是文件的内容,与文件名无关,也就是文件内容相同,其md5值相同。md5值是一个128位的二进制数据,转换成16进制则是32(128/4)位的进制值。 ...
  • md5校验码 md5sum

    2010-11-13 20:40:03
    http://www.centospub.com/make/install.html这个页面上的md5sum下载地址无法下载。 http://mirror.tini4u.net/centos/4.4/isos/i386/md5sum
  • Linux命令:md5sum

    2022-02-19 21:28:47
    adb shell md5sum --help

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 57,744
精华内容 23,097
关键字:

md5sum

友情链接: SCServo.zip