Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl-Sensitive Sunglasses

Re: Vigenere Cipher: Encode and Decode

by larryk (Friar)
on Jan 19, 2002 at 01:25 UTC ( #139953=note: print w/ replies, xml ) Need Help??

in reply to Vigenere Cipher: Encode and Decode

Having read and very much enjoyed this book a few years ago I took a stab at this particular cipher. Your letter crunching was a bit cleaner than mine so I adapted my old script - I split the key into an array to avoid having to create a second string the same size as the plaintext which may be quite large.

#!/usr/bin/perl -lw use constant ENCRYPT => 1; use constant DECRYPT => -1; use strict; my $txt = 'A Perlmonk\'s work is never done!'; my $key = 'larryk'; $txt =~ s/[^a-z]//gi; print 'before : ',$txt; print 'encrypted: ',encrypt( $txt, $key ); print 'after : ',decrypt( encrypt( $txt, $key ), $key ); sub encrypt { my @txt = split '', shift; my @key = split '', shift; join '', map uc letter( ENCRYPT, $txt[$_], $key[$_%@key] ), 0..$#t +xt; } sub decrypt { my @txt = split '', shift; my @key = split '', shift; join '', map lc letter( DECRYPT, $txt[$_], $key[$_%@key] ), 0..$#t +xt; } sub letter { my ($direction,$cipherchar,$keychar) = @_; lc chr( 97 + ( (ord(lc $cipherchar) - 97) + $direction*(ord(lc $keychar ) - 97) ) % 26 ); }
perl -le "s,,reverse killer,e,y,rifle,lycra,,print"

Comment on Re: Vigenere Cipher: Encode and Decode
Download Code

Log In?

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

How do I use this? | Other CB clients
Other Users?
Others perusing the Monastery: (7)
As of 2015-11-26 08:23 GMT
Find Nodes?
    Voting Booth?

    What would be the most significant thing to happen if a rope (or wire) tied the Earth and the Moon together?

    Results (696 votes), past polls