# Assumes ASCII. $string1 = "@@@@@"; $string2 = "ABCDE"; $xored = $string1 ^ $string2; print($xored eq "\x01\x02\x03\x04\x05" ? "ok\n" : "not ok\n"); #### my $repeats = (length($cipher_text) / length($pass)) + 1; my $pass_stream = substr($pass x $repeats, 0, length($cipher_text)); my $plain_text = $cipher_text ^ $pass_stream; #### foreach my $c1 ('a'..'z') { foreach my $c2 ('a'..'z') { foreach my $c3 ('a'..'z') { my $pass = $c1 . $c2 . $c3; ... }}}