Files

70 lines
1.5 KiB
Perl

#!/usr/local/bin/perl
# SCCS ID @(#)mddriver.pl 1.3 95/05/01
require 'getopts.pl';
use MD5;
sub DoTest;
&Getopts('s:x');
$md5 = new MD5;
if (defined($opt_s))
{
$md5->add($opt_s);
$digest = $md5->digest();
print("MD5(\"$opt_s\") = " . unpack("H*", $digest) . "\n");
}
elsif ($opt_x)
{
DoTest("", "d41d8cd98f00b204e9800998ecf8427e");
DoTest("a", "0cc175b9c0f1b6a831c399e269772661");
DoTest("abc", "900150983cd24fb0d6963f7d28e17f72");
DoTest("message digest", "f96b697d7cb7938d525a2f31aaf161d0");
DoTest("abcdefghijklmnopqrstuvwxyz", "c3fcd3d76192e4007dfb496cca67e13b");
DoTest("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",
"d174ab98d277d9f5a5611c2c9f419d9f");
DoTest("12345678901234567890123456789012345678901234567890123456789012345678901234567890",
"57edf4a22be3c955ac49da2e2107b67a");
}
else
{
if ($#ARGV >= 0)
{
foreach $ARGV (@ARGV)
{
die "Can't open file '$ARGV' ($!)\n" unless open(ARGV, $ARGV);
$md5->reset();
$md5->addfile(ARGV);
$hex = $md5->hexdigest();
print "MD5($ARGV) = $hex\n";
close(ARGV);
}
}
else
{
$md5->reset();
$md5->addfile(STDIN);
$hex = $md5->hexdigest();
print "$hex\n";
}
}
exit 0;
sub DoTest
{
my ($str, $expect) = @_;
my ($digest, $hex);
my $md5 = new MD5;
$md5->add($str);
$digest = $md5->digest();
$hex = unpack("H*", $digest);
print "MD5(\"$str\") =>\nEXPECT: $expect\nRESULT: $hex\n"
}