Windows和Linux利⽤原⽣命令查看⽂件MD5
在⽹络传输、设备之间转存、复制⼤⽂件等时,可能会出现传输前后数据不⼀致的情况。这种情况在⽹络这种相对更不稳定的环境中,容易出现。那么校验⽂件的完整性,也是势在必⾏的。
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 &
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
linux查看当前文件夹内容[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来校验⽣成⽂件校验码,来发现⽂件传输(⽹络传输、复制、本地不同设备间的传输)异常造成的⽂件内容不⼀致的情况。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。