md5sum 应用实践

什么鬼

假如,你需要向一个 ftp 服务器上传压缩文件,你需要一个简单的方法
让使用这个文件的人直到你的文件在传输的过程中没有丢失数据。

聪明的你可能想到了,md5 这个神奇东东,给 md5 一个字符串,他会还你
你个字符串,还还不是简单的还,是根据 md5 的算法,md5 算法是这样的:

无论你给它一个什么样的字符串,它都会为你返回一个 32 位(可以设置 16 或者其他)的字符串,而且同样的输入会得到同样的输出

话题转到 ftp 文件校验的问题上来。根据上面的原理,我们可以把一个文件当做是一个字符串,输入给 md5
这个函数,获得一个 32 位定长的字符(就叫他 md5 值 A )。当你传文件的时候,可以把在
你这边生成的 md5 值传到 ftp 上,使用文件的人,就可以根据相同的算法,算出文件的 md5 值(B),

A 和 B 如果相同,证明在网络传输的过程中,没有丢失数据,反之,异然。

在 Linux 的时间里这个命令叫md5sum,下面是man md5sum的结果:

MD5SUM(1)                                                                                      User Commands                                                                                      MD5SUM(1)

NAME
       md5sum - compute and check MD5 message digest

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

DESCRIPTION
       Print or check MD5 (128-bit) checksums.  With no FILE, or when FILE is -, read standard input.

       -b, --binary
              read in binary mode

       -c, --check
              read MD5 sums from the FILEs and check them

       --tag  create a BSD-style checksum

       -t, --text
              read in text mode (default)

              Note: There is no difference between binary and text mode option on GNU system.

一般来说,使用md5sum file > file.md5sum 来对文件 md5 加密,然后把加密后的结果重定向到 file.md5sum 里面
md5sum --status -c file.md5sum 对 文件 file 进行检查
--status 会将结果放到$?里面的,后面可以使用[ "$?" == "0" ] 判断是合格。

例子:

# file 上传 ftp

md5sum file > file.md5sum

# put file and file.md5sum to ftp 

# ftp check file

md5sum -status -c file.md5sum

if [ "$?" == "0" ]; then 
# file is ok and file is completed and you can handler the data of file
    

fi


猜你喜欢

转载自blog.csdn.net/bluedraam_pp/article/details/85226338
今日推荐