initial commit [141.14.140.180,mike]
This commit is contained in:
@@ -0,0 +1,69 @@
|
||||
#!/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"
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
#!/usr/local/bin/perl
|
||||
|
||||
use MD5;
|
||||
|
||||
#
|
||||
# twdigest -- format MD5 digest like TripWire does
|
||||
#
|
||||
# This converts the md5->digest binary string to
|
||||
# 64-radix ascii, given the base-vector:
|
||||
# 0 - 9, A - Z, a - z, :, .
|
||||
#
|
||||
|
||||
sub twdigest {
|
||||
my($digest) = @_;
|
||||
my(@chunks, $bits);
|
||||
|
||||
# Convert to ASCII bit-string
|
||||
$bits = unpack("B*", $digest);
|
||||
|
||||
# Round up length to multiple of 6 by prepending zeros
|
||||
$bits = ("0" x ((6 - (length($bits) % 6)) % 6)) . $bits;
|
||||
|
||||
# Split into 6-bit chunks
|
||||
@chunks = grep {$_ ne ''} (split(/(.{6})/, $bits, -1));
|
||||
|
||||
# Convert each 6-bit value to a single character
|
||||
foreach (@chunks)
|
||||
{
|
||||
$_ = pack("B8", "00" . $_);
|
||||
tr/\000-\011\012-\043\044-\075\076\077/0-9A-Za-z:./;
|
||||
}
|
||||
|
||||
# Join all of the chunks into one string
|
||||
join('', @chunks);
|
||||
}
|
||||
Reference in New Issue
Block a user