The fine chaps @ Perlmonks.org helped me with this. I needed a short encryption string and Crypt::RC4 fit the bill. I only had a 6 digit id that needed encryption, though. I haven't tested it with longer strings.
Also, Crypt::RC4 produces some bytes that aren't web-friendly. Here's some code that you can slap into a centralized script to get around that, if you need it:
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
Code courtesy of broquaint!