Beefy Boxes and Bandwidth Generously Provided by pair Networks
Clear questions and runnable code
get the best and fastest answer

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 
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
    if( $c ) {
    } else {
      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?

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

How do I use this? | Other CB clients
Other Users?
Others romping around the Monastery: (4)
As of 2017-08-23 23:20 GMT
Find Nodes?
    Voting Booth?
    Who is your favorite scientist and why?

    Results (360 votes). Check out past polls.