• Windows和Linux利用原生命令查看文件MD5


    来源:https://gofinall.com/53.html

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

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

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

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

    windows

    • 查看文件md5值       certutil -hashfile filename MD5
    • 查看文件sha1值       certutil -hashfile filename SHA1
    • 查看文件sha256值   certutil -hashfile filename SHA256

    linux

    • 查看文件md5值        md5sum filename
    • 查看文件sha1值       sha1sum filename
    • 查看文件sha256值   sha256sum filename

    下面重点讲下Linux下md5值用法:

    #查看单个文件的md5
    [root@master localhost]# md5sum  filename  
    0a6de444981b68d6a049053296491e49  filename
    #查看当前目录下所有文件的md5
    [root@master localhost]# md5sum *
    0a6de444981b68d6a049053296491e49  filename
    13df384c47dd2638fd923f60c40224c6  filename2
    • 将md5值重定向输出到文档:

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

    [root@master localhost]# md5sum data > data.md5
    [root@master localhost]# md5sum data
    0a6de444981b68d6a049053296491e49  data
    [root@master localhost]# cat data.md5
    0a6de444981b68d6a049053296491e49  data
    
    #将多个文件的md5重定向到指定的文件,每个文件的md5生成为一行
    
    [root@master localhost]# ls
    data  data.bak  data.md5  d.md5
    [root@master localhost]# md5sum data* > d.md5
    [root@master localhost]# cat d.md5
    0a6de444981b68d6a049053296491e49  data
    0a6de444981b68d6a049053296491e49  data.bak
    0bd94658869c53cdcdf35a0f7de93e01  data.md5
    • 重定向追加

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

    [root@master localhost]# cp /bin/ls .
    [root@master localhost]# ls
    data  data.bak  data.md5  d.md5  ls
    [root@master localhost]# md5sum ls >> d.md5
    [root@master localhost]# cat d.md5
    0a6de444981b68d6a049053296491e49  data 
    0a6de444981b68d6a049053296491e49  data.bak
    0bd94658869c53cdcdf35a0f7de93e01  data.md5
    c6337b20f3c159544bff5cf622391f9e  ls

    插播一下Windows的内容:

    Windows系统里面将哈希值重定向输出到文档,可以参照如下命令格式:

    格式:
        certutil  -hashfile  fileName  哈希算法名字  >输出文件名    
    例如:
    certutil -hashfile dir命令.txt  sha1 >sha1result.txt

    Windows系统里面Certutil命令的使用格式如下:

    用法:
      CertUtil [选项] -hashfile FileName [HashAlgorithm]
      通过文件生成并显示加密哈希
    
    选项:
      -Unicode          -- 以 Unicode 编写重定向输出
      -gmt              -- 将时间显示为 GMT
      -seconds          -- 用秒和毫秒显示时间
      -v                -- 详细操作
      -privatekey       -- 显示密码和私钥数据
      -pin PIN                  -- 智能卡 PIN
      -sid WELL_KNOWN_SID_TYPE  -- 数字 SID
                22 -- 本地系统
                23 -- 本地服务
                24 -- 网络服务
    
    哈希算法: MD2 MD4 MD5 SHA1 SHA256 SHA384 SHA512
    
    CertUtil -?              -- 显示动词列表(命名列表)
    CertUtil -hashfile -?    -- 显示 "hashfile" 动词的帮助文本
    CertUtil -v -?           -- 显示所有动词的所有帮助文本

     Windows环境下面可以用一些工具比较两个文件的异同,甚至两个Word文档在office里面也可以比较异同。可以借此来校验两个文档的哈希值是否一致。

    下面继续Linux环境下的md5值的介绍:

    • md5校验

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

    [root@master localhost]# md5sum -c d.md5
    data: OK
    data.bak: OK
    data.md5: OK 
    ls: OK

    修改文件后,文件md5变化

    [root@master localhost]# ls
    data
    [root@master localhost]# md5sum data
    2360752c3368ca4f89169f5ecc06e383  data
    [root@master localhost]# md5sum data  > data.md5
    [root@master localhost]# echo "lwg" >> data
    [root@master localhost]# md5sum data
    287d237083a42f09785daa46a5fa3afe  data
    [root@master localhost]# md5sum -c data.md5
    data: FAILED
    md5sum: WARNING: 1 of 1 computed checksum did NOT match

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

    [root@master localhost]# md5sum -c ../value.md5
    acpid: OK
    acpid.1: OK
    anaconda.log: OK
    anaconda.syslog: OK
    anaconda.xlog: OK
    boot.log: OK
    boot.log.1: OK
    ...
    ...
    省略中间部分
    ...
    ...
     yum.log.2: OK  15: md5sum: WARNING: 1 of 56 computed checksums did NOT match
    [root@master localhost]# md5sum -c ../value.md5 | grep -v OK
    md5sum: WARNING: 1 of 56 computed checksums did NOT match
    cron.1: FAILED

    特殊说明

    1. md5sum 是校验文件内容,与文件名是否相同无关
    2. md5sum值逐位校验,所以文件越大,校验时间越长。

    总结:

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

  • 相关阅读:
    【郑轻邀请赛 G】密室逃脱
    【郑轻邀请赛 C】DOBRI
    【郑轻邀请赛 F】 Tmk吃汤饭
    【郑轻邀请赛 I】这里是天堂!
    【郑轻邀请赛 B】base64解密
    【郑轻邀请赛 A】tmk射气球
    【郑轻邀请赛 H】 维克兹的进制转换
    解决adb command not found以及sdk环境配置
    adb shell 命令详解,android, adb logcat
    Unexpected exception 'Cannot run program ... error=2, No such file or directory' ... adb'
  • 原文地址:https://www.cnblogs.com/huashanqingzhu/p/15550093.html
Copyright © 2020-2023  润新知