用md5算法检测文件的完整性

来源:互联网 发布:网络机顶盒看莆田卫视 编辑:程序博客网 时间:2024/06/05 11:14
MD5算法常常被用来验证网络文件传输的完整性,防止文件被人篡改。
MD5全称是报文摘要算法(Message-Digest Algorithm5)
此算法对任意长度的信息逐位进行计算,产生一个二进制长度为128位(十六进制长度就是32位)的“指纹”(或称“报文摘要”),不同的文件产生相同的报文摘要的可能性是非常非常之小的。
在linux或Unix上,md5sum是用来计算和校验文件报文摘要的工具程序。一般来说,安装了Linux后,就会有md5sum这个工具,直接在命令行终端直接运行。

1.使用md5sum来产生指纹(报文摘要)命令如下:
md5sum file > file.md5    //覆盖
或者
md5sum file >>file.md5    //添加
也可以把多个文件的报文摘要输出到一个md5文件中,这要使用通配符*,比如某目录下有几个txt文件,要把这几个文件的摘要输出到test.md5文件中,命令如下:
md5sum *.txt> test.md5

2.使用md5报文摘要验证文件:
把下载的文件file和该文件的file.md5报文摘要文件放在同一个目录下,然后用如下命令进行验证:
md5sum -c file.md5
然后如果验证成功,则会输出:
filename: OK  (注意格式
 
3.查看一个字符串的md5值
echo "123" | md5sum
 
4.对文件夹里文件整体操作
比如要对mm文件夹
[wang@localhost 桌面]$ find ./mm -type f -name "*" -exec md5sum {} \;
fe185931e17b40cd2c1716e2aa77a1f1  ./mm/test.sh
2180296c4f3271dc52ca661e75a4c21e  ./mm/00.txt
d41d8cd98f00b204e9800998ecf8427e  ./mm/00.txt~
注意:{}后空一格接\ 再加上一个分号
find ./mm -type f -name "*" -exec md5sum {} \;| sort
这条命令可以用来查看重复文件 并排序
 
用例
查看挂载的文件完整性,比如U盘。
sprintf(cmd,"cd %s; md5sum -c check.md5 | grep \"%s: OK\"",mount_file,find_name);
ret = system(cmd);

注意
1.分号后面马上接命令,因为在挂载中运行完命令后操作点会回到最初的地方。
2.grep命令中后面要查找的文件用双引号,引号中有引号,使用转义字符“\”。
3.md5sum检测文件的输出格式是filename: OK(文件名后冒号,空一格后接OK)。




原创粉丝点击