linux下md5sum 校验文件完整性

1、简介

  MD5算法常常被用来验证网络文件传输的完整性,防止文件被人篡改。MD5 全称是报文摘要算法(Message-Digest Algorithm 5),此算法对任意长度的信息逐位进行计算,产生一个二进制长度为128位(十六进制长度就是32位)的“指纹”(或称“报文摘要”),不同的文件产生相同的报文摘要的可能性是非常非常之小的。 
在linux或Unix上,md5sum是用来计算和校验文件报文摘要的工具程序。一般来说,安装了Linux后,就会有md5sum这个工具,直接在命令行终端直接运行。 

2、命令格式

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

3、命令选项

-b 或 --binary :把输入文件作为二进制文件看待。 
-t 或 --text :把输入的文件作为文本文件看待(默认)。 
-c 或 --check :用来从文件中读取md5信息检查文件的一致性。(不细说了参见info) 
--status :这个选项和check一起使用,在check的时候,不输出,而是根据返回值表示检查结果。 
-w 或 --warn :在check的时候,检查输入的md5信息又没有非法的行,如果有则输出相应信息。

4、例子

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

[root@test patch]# md5sum p182  > cc.txt

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

[root@test patch]# cat cc.txt 
dd05e55e3aca2d39e49a1a7d1b3fd404  p182

(2)检查两个文件是否一样,可以通过比较两个文件的md5值

[root@test patch]# md5sum p182 > ee.txt
[root@test patch]# cat ee.txt 
0f0b000b096ac947d6067466cc60ffd0  p182

[root@test patch]#
md5sum p183 > ff.txt
[root@test patch]# cat ff.txt 
dd05e55e3aca2d39e49a1a7d1b3fd404  p183

(3)判断一个文件是否修改,通过md5来判断

[root@test patch]#
md5sum p182 > cc.txt
[root@test patch]# cat cc.txt 
0f0b000b096ac947d6067466cc60ffd0  p182

修改下p182文件:

[root@test patch]# vi p182 

跟原来的md5结果进行对比:
[root@test patch]# md5sum p182 -c cc.txt 
md5sum: p182: no properly formatted MD5 checksum lines found
p182: FAILED
md5sum: WARNING: 1 of 1 computed checksum did NOT match

修改后md5结果如下:

[root@test patch]# md5sum p182 > dd.txt
[root@test patch]# cat dd.txt 
521e87e3331e94a483aec6bf19039845  p182

时间: 2024-08-01 06:00:13

linux下md5sum 校验文件完整性的相关文章

C语言压缩文件和用MD5算法校验文件完整性的实例教程_C 语言

使用lzma SDK对7z文件简单解压缩有时候我们只需要单纯对lzma算法压缩的7z文件进行解压,有时需要在嵌入式设备上解压,使用p7zip虽然支持多种格式,但是不容易裁剪,使用lzma SDK是首选: 可以在这里找到各种版本:http://zh.sourceforge.jp/projects/sfnet_sevenzip/releases/ 我下载了4.65版本,这个对文件名编码支持没有9.20的好,中文可能有问题,但是我的需求不需要支持中文文件名,所以足够用了. 解压后先看一下7z这个工程,

runtime-java 在linux 下调用 SH 文件 在windows 下调用 bat 执行后不能 看见进程

问题描述 java 在linux 下调用 SH 文件 在windows 下调用 bat 执行后不能 看见进程 public boolean execCmd(String[] cmds){Process p = null;Runtime rt = Runtime.getRuntime();BufferedReader in = null;InputStreamReader reader = null;try { p = rt.exec(cmds); InputStream info = p.get

Linux下如何知道文件被那个进程写

本文链接地址: Linux下如何知道文件被那个进程写 一个问题:(想想能解决不?) "一个文件正在被进程写 我想查看这个进程 文件一直在增大 找不到谁在写 使用lsof也没找到" 这个问题挺有普遍性的,解决方法应该很多,这里我给大家提个比较直观的方法. linux下每个文件都会在某个块设备上存放,当然也都有相应的inode, 那么透过vfs.write我们就可以知道谁在不停的写入特定的设备上的inode. 幸运的是systemtap的安装包里带了inodewatch.stp,位于/us

Linux下主机间文件传输命令

SCP命令: 简介: scp 命令在网络上的主机之间拷贝文件,它是安全拷贝(secure copy)的缩写. scp 命令使用 ssh 来传输数据,并使用与 ssh 相同的认证模式,提供同样的安全保障. 如果有公钥打通就不用密码,如果没有就会提示输入密码. 用法: 1 #Copy 本地文件 /etc/eva.log, 到远程机器 sysB, 用户 user 的家目录下 2 scp /etc/eva.log user@sysB:/home/user 3 #copy 远程机器 sysB 上的文件 /

服务器-怎么办,把linux下的一个文件夹误删了,里面有我写好的脚本文件,好虐心~

问题描述 怎么办,把linux下的一个文件夹误删了,里面有我写好的脚本文件,好虐心~ 我不是root,远程登录服务器在我的的工作目录工作,能不能提供点简单的命令啊?原理我以后再慢慢懂. 解决方案 办法不是没有,是很难弄! 一般情况下是弄不出来的,只能尽力去试试.我一般使用:debugfs,但是这个工具比较严格,你先在另一台电脑上,试着删除一个文件, 然后通过该工具恢复一下,记住,让文件中写点东西.多试几次,掌握使用方法,网上的教程其实是不全的.你只能自己按照那些教程摸索一遍,把他们不全的地方 补

Linux下控制(统计)文件的生成的C代码实现_C 语言

本文分享了Linux下控制(统计)文件的生成的C代码实现案例,供大家参考,具体内容如下 一.需求描述 不定时地在Linux机器下的某目录中放入文件,文件内容中包含了用户号码.起止时间等字段,现要求编写一程序来统计目前该目录中所有文件中的记录总条数及所有记录中的最早起始时间和最晚结束时间. 例如,该目录中有两个文件Test_1.txt和Test_2.txt,其中Test_1.txt文件内容为: 15696192591|15696192592|20151103 120909|20151103 201

C语言实现Linux下的socket文件传输实例_C 语言

本文实例讲述了C语言实现Linux下的socket文件传输.分享给大家供大家参考.具体如下: server.c如下: //////////////////////////////////// //服务器代码 /////////////////////////////////// //本文件是服务器的代码 #include <netinet/in.h> // for sockaddr_in #include <sys/types.h> // for socket #include &

c++-Linux下编译C++文件出现问题

问题描述 Linux下编译C++文件出现问题 写了一个Course类,编译g++ -std=c++11 Course.cpp时出现提示 刚看的C++ Primer,小白,还请给位前辈指点一下,谢谢. Course.h #ifndef COURSE #define COURSE #include <string> #include <iostream> using namespace std; class Course{ friend istream &read(istrea

使用内存作linux下的/tmp文件夹?

使用内存作linux下的/tmp文件夹? 在/etc/fstab中加入一行: none /tmp tmpfs default 0 0 或者在/etc/rc.local中加入 mount tmpfs /tmp -t tmpfs -o size=128m 注:size=128m 表示/tmp最大能用128m 不管哪种方式,只要linux重启,/tmp下的文件全部消失