#!perl
push(@INC,'/afs/athena.mit.edu/user/e/eichin/perl');
require 'des.perl';

$key12 = pack("C8",    0x01,0x23,0x45,0x67,0x89,0xab,0xcd,0xef);

$kl = hex($ARGV[0]);
$kr = hex($ARGV[1]);
$dl = hex($ARGV[2]);
$dr = hex($ARGV[3]);

printf "%8x%08x,",$kl,$kr;
printf "%8x%08x\n",$dl,$dr;
$key=pack("L L",$kl,$kr);

$schedule="";

&make_key_sched($key,$schedule);

for (0..15) {
  $i=8*$_;
  
  printf "%d:%08x,%08x\n",$_,
               unpack("x$i L",$schedule),
               unpack("x$i xxxx L",$schedule);
}
print "done.\n";

#$datum=pack("x8",1);
$datum=pack("L L",$dl,$dr);
$datum="Now is the time for all ";

printf "%02x " x 8,unpack("C" x 8,$datum);
print "-->\n";

($left,$right) = unpack("N N",$datum);
$temp = 0;

printf "%8x%08x\n",$left,$right;
&DES_DO_ENCRYPT($left, $right, $temp, $schedule);
printf "%8x%08x\n",$left,$right;
$outdat = pack("N N",$left,$right);

printf "%02x " x 8,unpack("C" x 8,$outdat);
print "\n";
&DES_DO_DECRYPT($left, $right, $temp, $schedule);
printf "reversed: %8x%08x\n",$left,$right;
$outdat = pack("N N",$left,$right);

printf "%02x " x 8,unpack("C" x 8,$outdat);
print "\n";

