系统管理工具包: 测试系统的有效性
2008-11-11 08:12:28 来源:WEB开发网生成校验和信息的 md5 算法最初是为在加密文件之前生成文件的唯一指纹而开发的,这样可以保证解密文件的有效性。可以将 md5 生成的校验和表示为二进制字符串、十六进制字符串或 base64 编码字符串。在 MIME 电子邮件中使用了后一格式,以确保唯一地标识文件中不同的附件。
为文件创建校验和
因为存在用于创建校验和信息的命令行解决方案,所以可以直接在命令行上创建任何文件的校验和。校验和信息唯一程度的一个很好示例是使用先前演示的文件示例,该示例具有相同的物理长度和内容,但只有字符不同。
您可以使用一个命令获得两个文件的校验和,如清单 1 所示。
清单 1. 使用一个命令获得两个文件的校验和
$ sum old new
50093 1 old
62381 1 new
即使清单 1 中只有两个字符不同,但获得的校验和数字却大相径庭。清单 2 显示了相同的文件,这次是使用 md5 检查的。
清单 2. 使用 md5 检查文件
$ md5 old new
MD5 (old) = 602f604720d3b57925e99bcaa7d931a4
MD5 (new) = c3f06c217a0f26c16f8d030837d8718b
这里的校验和明显不同,毫无疑问相关文件在某些方面存在不同。
创建校验和的另一个解决方案是使用 Perl 生成校验和信息。Perl 使用的一个模块是 Digest::MD5,该模块可以从数据的任何字符串或提供的文件生成 MD5 校验和。
清单 3 显示了一个简单的脚本,该脚本为命令行上作为十六进制字符串提供的文件返回 MD5 校验和(与清单 2 显示的格式完全相同)。
清单 3. 返回 MD5 校验和的脚本
use Digest::MD5;
use IO::File;
my $chk = Digest::MD5->new();
foreach my $file (@ARGV)
{
$chk->addfile(IO::File->new($file));
print "$file -> ",$chk->hexdigest,"n";
}
更多精彩
赞助商链接