zoukankan      html  css  js  c++  java
  • md5sum摘要

    1、简介

    MD5算法一般用于检查文件完整性,尤其常用于检测在(网络)文件传输、拷贝、磁盘错误或其他无恶意涉入的情况下文件的正确性。MD5全称报文摘要算法(Message-DigestAlgorithm 5)[RFC 1321],该算法对任意长度的信息进行逐位计算,产生一个二进制长度128位(十六进制长度32位)的校验和(或称“指纹”,“报文摘要”),不同的文件内容生成相同的报文摘要的概率是极其小的。

    在Linux或Unix上,md5sum是用来计算和校验文件报文摘要的工具程序。一般来说,安装了Linux后,就会有md5sum工具,可以在命令行终端直接执行。

     
    2、命令格式

    md5sum [OPTION]... [FILE]...

     

    命令选项

    -b或 --binary:以二进制模式读入文件;

    -t或 --text:以文本文件模式读入文件(默认);

    -c或 --check:用来从文件中读取md5信息检查文件的一致性;

    --status:该选项与check一起使用,在check时不输出,根据返回值表示检查结果;

    -w或 --warn:在check时,检查输入的md5信息有没有非法行,若有则输出相应信息。

     
    4、实例演示

    1)生成一个文件的md5值,如下所示:

    [root@HLZ test]# ll

    total 16

    -rw-r--r--1 root root 240 Sep 4 22:26 aaa_pkg.tgz

    -rw-r--r--1 root root  11 Sep 4 22:01 aaa.txt

    -rw-r--r--1 root root  46 Sep 4 22:24 bbb.log

    drwxr-xr-x2 root root 4096 Sep 4 22:24 checksum

    [root@HLZ test]#

    [root@HLZ test]# md5sum aaa.txt > checksum/aaa.md5

    这样,就生成了文件aaa.txt的md5校验文件aaa.md5,打开可以看到如下内容:

    [root@HLZ test]# cat checksum/aaa.md5

    d700cf9bb133858df4d3e0486848be78 aaa.txt

     

    2)md5sum支持多个文件输入或通配符

    [root@HLZ test]# md5sum aaa.txt bbb.log aaa_pkg.tgz > checksum/all.md5

    [root@HLZ test]# cat checksum/all.md5

    d700cf9bb133858df4d3e0486848be78 aaa.txt

    fff62b77988e5b9d83a2872bb2247b21 bbb.log

    36eb58b2563f91baf61531aef126eea6 aaa_pkg.tgz

    [root@HLZ test]# md5sum aaa* > checksum/aaa_all.md5

    [root@HLZ test]# cat checksum/aaa_all.md5

    36eb58b2563f91baf61531aef126eea6 aaa_pkg.tgz

    d700cf9bb133858df4d3e0486848be78 aaa.txt

     

    3)文件内容校验

    [root@HLZ test]# md5sum -c ./checksum/aaa.md5

    aaa.txt:OK

    [root@HLZ test]# md5sum -c ./checksum/all.md5

    aaa.txt:OK

    bbb.log:OK

    aaa_pkg.tgz:OK

    [root@HLZ test]# vi bbb.log     ---修改bbb.log文件内容,添加7个0

    abceefghijklmnopqr0000000stuvwxyz1234567890987654321

    [root@HLZ test]# md5sum -c ./checksum/all.md5

    aaa.txt:OK

    bbb.log: FAILED

    aaa_pkg.tgz:OK

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

    [root@HLZ test]#

     

    4)文件路径的考虑($PWD即当前路径/home/hanlzh/test/)

    [root@HLZ test]# pwd

    /home/hanlzh/test

    [root@HLZ test]# md5sum $PWD/aaa.txt > ./checksum/aaa.md5

    [root@HLZ test]# cat checksum/aaa.md5

    d700cf9bb133858df4d3e0486848be78 /home/hanlzh/test/aaa.txt

    [root@HLZ test]# md5sum -c ./checksum/aaa.md5

    /home/hanlzh/test/aaa.txt:OK

    [root@HLZ test]# cd ..

    [root@HLZ hanlzh]# md5sum -c ./test/checksum/aaa.md5

    /home/hanlzh/test/aaa.txt:OK

     

    4)文件缺失或不存在情况

    [root@HLZ test]# rm -rf aaa_pkg.tgz

    [root@HLZ test]# md5sum -c ./checksum/aaa_all.md5

    md5sum: aaa_pkg.tgz: No such file or directory

    aaa_pkg.tgz: FAILED open or read

    aaa.txt:OK

    md5sum: WARNING: 1 of 2 listed files could not be read
    5、总结

    特殊说明

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

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

     

    md5校验,可能极小概率出现不同的文件生成相同的校验和,比md5更安全的校验算法还有SHA*系列,如sha1sum/sha224sum/sha256sum/sha384sum/sha512sum等等,基本用法与md5sum命令类似,详情可通过man sha1sum查询。

    以下仅简单列举一例,不再赘述。

    [root@HLZ test]# sha512sum aaa.txt > aaa.sha512

    [root@HLZ test]# cat aaa.sha512

    8edb9790359ef641112fa85eea5c8f09b7330564a58cddf39aef66006f32454a8879b1e63d9f667ecf86264d4d5b6a602a4c94c79d962ec755345a3837217f89 aaa.txt

    [root@HLZ test]#

    [root@HLZ test]# sha512sum -c ./aaa.sha512

    aaa.txt:OK
    ————————————————
    版权声明:本文为CSDN博主「hanlizhong85」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/hanlizhong85/article/details/77844635

  • 相关阅读:
    【loj2639】[Tjoi2017]不勤劳的图书管理员
    【bzoj3514】Codechef MARCH14 GERALD07加强版
    BZOJ1002【FJOI2007】轮状病毒
    数论基础(附加例题)
    表达式总结
    背包
    hdu1027
    hdu1026
    hdu1025
    hdu1024
  • 原文地址:https://www.cnblogs.com/tyk3201/p/11973081.html
Copyright © 2011-2022 走看看