sub get16 { my $data = shift; # return "\0" x ( 16 - length($data) % 16 ) . $data; return $data . "\0" x ( 16 - length($data) % 16 ); } #### #!/usr/bin/perl use warnings; use strict; use Crypt::Rijndael; my $key = "1A2B3C4D5E6Fabcd"; #$key = pack("H*",$key); print "$key\n"; my $crypt = Crypt::Rijndael->new( $key, Crypt::Rijndael::MODE_ECB() ); my $vers = 1; my $rand = 1002247; my $time = 1317072992; my $empid = 123; my $sum = 103; my $ndid = 42; my $packed = pack( "CLLLC", $vers, $rand, $time, $ndid, $sum ); print "$packed\n"; my @unpacked = unpack("CLLLC",$packed) ; print "@unpacked\n"; my $token = $crypt->encrypt($packed^("\0"x16)); print "\n$token\n"; $token = unpack("H*",$token); print "---------+---------+---------+--\n"; print $token,"\n"; # do decryption my $z = pack("H*", $token); print "$z\n"; my $cbc1 = new Crypt::Rijndael $key, Crypt::Rijndael::MODE_CBC; my $decrypted = $cbc1->decrypt($z); print "decrypted->$decrypted\n"; my @values = unpack("CLLLC",$decrypted) ; print "@values\n"; exit;