Beefy Boxes and Bandwidth Generously Provided by pair Networks
There's more than one way to do things
 
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;

Comment on Cheesy Encryption
Download Code
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; }

Back to Code Catacombs

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: sourcecode [id://9400]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others lurking in the Monastery: (17)
As of 2015-07-31 13:53 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (278 votes), past polls