Beefy Boxes and Bandwidth Generously Provided by pair Networks
Your skill will accomplish
what the force of many cannot
 
PerlMonks  

Cheesy Encryption

by ergowolf (Monk)
on Apr 27, 2000 at 18:04 UTC ( #9400=sourcecode: print w/replies, xml ) Need Help??
Category: cryptography
Author/Contact Info ergowolf
Description: creesy ROT13 or caeser encryption. This was one of the first programs I wrote on my own. It does not preserve case.
my $text;
my $type;

# This section grabs the text from the user and converts to lower case
+.
print "Please enter the text you would like to encrypt:";
chomp($text = <STDIN>);
$text =~ tr/A-Z/a-z/;

# This section lets you pick the type of encryption you would like to 
+use.
print "Please enter c for Caesar or r for ROT13 encryption: ";
chomp($type = <STDIN>);
$type =~ tr/A-Z/a-z/;

# This section uses the encryption you chose.
if ($type eq c) {
    $text =~ tr/c-za-b/a-z/;
}
if ($type eq r) {
    $text =~ tr/n-za-m/a-z/;
}
print $text;
Replies are listed 'Best First'.
RE: Cheesy Encryption
by chromatic (Archbishop) on Apr 27, 2000 at 20:36 UTC
    Here's how to make it preserve case. The example is only for ROT-13, as you should be able to figure out the rest. First, remove the tr/A-Z/a-z/:
    if ($type eq 'r'( { $text =~ tr/N-ZA-Mn-za-m/A-Za-z/; }
      Thanks for the tip. I will try it tonight.
RE: Cheesy Encryption
by Anonymous Monk on Jun 15, 2000 at 23:32 UTC
    Another way to do it:
    #!/usr/bin/perl -sp
    BEGIN {
            if ($h) {
                    print <<"USAGE";
    Usage: caesar: $0 -c filename
            rot13: $0 filename
    USAGE
                    exit;
            }
    }
     
    if( $c ) {
            tr/A-Za-z/D-ZA-Cd-za-c/;
    } else {
            tr/A-Za-z/N-ZA-Mn-za-m/;
    }
    
      how about this? offers 3-way "encryption"...
      #!/usr/bin/perl use warnings; use strict; use Getopt::Std; my %opt; usage() unless (getopts('rRcCaA', \%opt)); usage() unless @ARGV; if($opt{'r'} || $opt{'R'}) { while(<>) { tr/a-zA-Z/n-za-mN-ZA-M/; print; } } elsif($opt{'c'}) { while(<>) { tr/a-zA-Z/d-za-cD-ZA-C/; print; } } elsif($opt{'C'}) { while(<>) { tr/d-za-cD-ZA-C/a-zA-Z/; print; } } elsif($opt{'a'}) { while(my $line = <>) { @_ = split//, $line; map { print ord($_), " "; } @_; print "\n"; } } elsif($opt{'A'}) { while(my $line = <>) { @_ = split/ /, $line; map { print chr($_); } @_; print "\n"; } } sub usage { print << "__END__"; -c = encrypt with Caesar encryption -C = decrypt from Caesar encryption -r = encrypt with rot13 -R = decrypt from rot13 -a = encrypt to numerical equivalent -A = decrypt back to ASCII example using files: perl $0 -r plain.txt perl $0 -C encrypted.txt example using STDIN: perl $0 -r <ENTER, type text> __END__ exit 1; }
Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: sourcecode [id://9400]
help
Chatterbox?
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others imbibing at the Monastery: (4)
As of 2017-02-28 09:16 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    Before electricity was invented, what was the Electric Eel called?






    Results (398 votes). Check out past polls.