Beefy Boxes and Bandwidth Generously Provided by pair Networks Frank
Pathologically Eclectic Rubbish Lister
 
PerlMonks  

Re: Vigenere Cipher: Encode and Decode

by larryk (Friar)
on Jan 18, 2002 at 20:25 UTC ( [id://139953]=note: print w/replies, xml ) Need Help??

This is an archived low-energy page for bots and other anonmyous visitors. Please sign up if you are a human and want to interact.


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 ); }
   larryk                                          
perl -le "s,,reverse killer,e,y,rifle,lycra,,print"

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://139953]
help
Sections?
Information?
Find Nodes?
Leftovers?
    Notices?
    hippoepoptai's answer Re: how do I set a cookie and redirect was blessed by hippo!
    erzuuliAnonymous Monks are no longer allowed to use Super Search, due to an excessive use of this resource by robots.