|There's more than one way to do things|
Re: ACA JAPH (hints)by goibhniu (Hermit)
|on Aug 22, 2007 at 14:08 UTC||Need Help??|
My first clue is to explain ACA in the post. It's probably not very helpful; just a nudge in a direction. Here's the link:
My next clue is somethign most here could do themselves, but I just learned it this week (from reading PerlMonks!). Here's the perl -MO=Deparse output (this is without eyepopslikeamosquito's reduction):
My next clue is to comment my variables. This is a big leap and probably a give away. I wish I had better intermediate clues for ya.
ok, here's what I'm doing:
I create an array of annonymous subroutine references.
$ca is the subroutine that takes a keyphrase and a caesar shift to create a key alphabet. This is what the ACA calls a K1. The keyword is reduced to it's unique letters in the order of occurrence in the key phrase followed by the rest of the letters in alphabetical order. This procuces a scrambled alphabet. In a K1, this scrambled alphabet is written as the plaintext alphabet and is associated with a CIPHERTEXT alphabet in natural order (in the ACA the convention is that plaintext be in lower case and CIPHERTEXT in uppercase). The two alphabets are shifted with respect to each other by a factor that ensures no letter is enciphered to itself.
In $ca I use the keyphrase letters plus the 'rest of the alphabet' in order as the keys (overloaded word there) to the %p2C hash. Then I turn p2C inside out to get C2p.
$ca does the decryption. Actually, it takes some text and a hashref to do either decryption or encryption. This simply replaces the letters in the text with the values dereferenced from the hash by that letter. If you pass it p2C, you'd be encrypting; C2p would be decrypting.
The next line calls $ca with the keyphrase 'thequickbrownfoxjumpsoverthelazydogs' and a caesar shift of 10 to set up the C2p hash.
Finally, print the decrypted version of 'ZOCK FWUKLMT BMTE LFQR'. You know what that says!
I humbly seek wisdom.