Well if you want the crypted string to be the same length as the input string then I'd recommend
Crypt::RC4. It encrypts and decrypts with the same function (I forget the technical term for it ...) so is nice and easy to use. However you'll probably want to make the encrypted string web friendly e.g
use Crypt::RC4;
sub nice_encrypt {
my($val, $key) = @_;
return join '',
map { sprintf('%02x', ord()) }
split //, RC4($key, $val);
}
sub nice_decrypt {
my($val, $key) = @_;
return RC4($key, join '',
map { chr(hex($_)) }
$val =~ /../g);
}
my $encstr = nice_encrypt("foobar", 123);
my $decstr = nice_decrypt($encstr, 123);
print "$encstr\n$decstr\n";
__END__
output - 359fd0e08406
foobar
The above code doubles the size of the crypted string, but I'm sure you get the gist of it.
HTH
broquaint