Codman Academy Visit, November 2, 2007

Adventures in Shifty Cryptography

Daniel Bilar and Franklyn Turbak


Shift Cipher

Idea: Shift each letter in the plaintext by the same amount to obtain the ciphertext.

Shift A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
  0   A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
  1   B C D E F G H I J K L M N O P Q R S T U V W X Y Z A
  2   C D E F G H I J K L M N O P Q R S T U V W X Y Z A B
  3   D E F G H I J K L M N O P Q R S T U V W X Y Z A B C
  4   E F G H I J K L M N O P Q R S T U V W X Y Z A B C D
  5   F G H I J K L M N O P Q R S T U V W X Y Z A B C D E
  6   G H I J K L M N O P Q R S T U V W X Y Z A B C D E F
  7   H I J K L M N O P Q R S T U V W X Y Z A B C D E F G
  8   I J K L M N O P Q R S T U V W X Y Z A B C D E F G H
  9   J K L M N O P Q R S T U V W X Y Z A B C D E F G H I
 10   K L M N O P Q R S T U V W X Y Z A B C D E F G H I J
 11   L M N O P Q R S T U V W X Y Z A B C D E F G H I J K
 12   M N O P Q R S T U V W X Y Z A B C D E F G H I J K L
 13   N O P Q R S T U V W X Y Z A B C D E F G H I J K L M
 14   O P Q R S T U V W X Y Z A B C D E F G H I J K L M N
 15   P Q R S T U V W X Y Z A B C D E F G H I J K L M N O
 16   Q R S T U V W X Y Z A B C D E F G H I J K L M N O P
 17   R S T U V W X Y Z A B C D E F G H I J K L M N O P Q
 18   S T U V W X Y Z A B C D E F G H I J K L M N O P Q R
 19   T U V W X Y Z A B C D E F G H I J K L M N O P Q R S
 20   U V W X Y Z A B C D E F G H I J K L M N O P Q R S T
 21   V W X Y Z A B C D E F G H I J K L M N O P Q R S T U
 22   W X Y Z A B C D E F G H I J K L M N O P Q R S T U V
 23   X Y Z A B C D E F G H I J K L M N O P Q R S T U V W
 24   Y Z A B C D E F G H I J K L M N O P Q R S T U V W X
 25   Z A B C D E F G H I J K L M N O P Q R S T U V W X Y

Example:

		      Plaintext: ibm
	Ciphertext (shift by 1): JCN
		   (shift by 2): KDO
		  (shift by 25): HAL

Here is an applet for the shift cipher that you can use to help with shifting.

Challenge 1: Encrypt codman academy with a shift of 20.

How can we decrypt a message encrypted with a shift cipher shifting by n?

Suppose we don't know n?

Challenge 2: Decrypt the following two messages that have been encrypted with a shift cipher.

  1. NVCCVJCVPTFCCVXVTFDGLKVIJTZVETV
  2. JBEYQPUNZCVBAOBFGBAERQFBK

Note: ROT13 is a shift-by-13 cipher that is used in many places on the Internet to protect information from "casual glance". How do you decrypt something encrypted with ROT13?


Letter Frequency Analysis

Idea: Knowing the frequencies of letters in English text can help us break many ciphers, including shift ciphers.

Check out this information about letter frequencies.

Here is an applet for letter frequency analysis.

Challenge 3: Perform a letter frequency analysis on some of the following examples:

Challenge 4: Perform a letter frequency analysis on the following examples from Challenge 2.

  1. NVCCVJCVPTFCCVXVTFDGLKVIJTZVETV
  2. JBEYQPUNZCVBAOBFGBAERQFBK

Could you predict the correct shift from your analysis?


Vigenere Cipher

Idea: Shift each letter in the plaintext by a different amount according to a key. (If the key is shorter than the plaintext, repeat it as many times as necessary.)

CharABCDEFGHIJKLMNOPQRSTUVWXYZ
AABCDEFGHIJKLMNOPQRSTUVWXYZ
BBCDEFGHIJKLMNOPQRSTUVWXYZA
CCDEFGHIJKLMNOPQRSTUVWXYZAB
DDEFGHIJKLMNOPQRSTUVWXYZABC
EEFGHIJKLMNOPQRSTUVWXYZABCD
FFGHIJKLMNOPQRSTUVWXYZABCDE
GGHIJKLMNOPQRSTUVWXYZABCDEF
HHIJKLMNOPQRSTUVWXYZABCDEFG
IIJKLMNOPQRSTUVWXYZABCDEFGH
JJKLMNOPQRSTUVWXYZABCDEFGHI
KKLMNOPQRSTUVWXYZABCDEFGHIJ
LLMNOPQRSTUVWXYZABCDEFGHIJK
MMNOPQRSTUVWXYZABCDEFGHIJKL
NNOPQRSTUVWXYZABCDEFGHIJKLM
OOPQRSTUVWXYZABCDEFGHIJKLMN
PPQRSTUVWXYZABCDEFGHIJKLMNO
QQRSTUVWXYZABCDEFGHIJKLMNOP
RRSTUVWXYZABCDEFGHIJKLMNOPQ
SSTUVWXYZABCDEFGHIJKLMNOPQR
TTUVWXYZABCDEFGHIJKLMNOPQRS
UUVWXYZABCDEFGHIJKLMNOPQRST
VVWXYZABCDEFGHIJKLMNOPQRSTU
WWXYZABCDEFGHIJKLMNOPQRSTUV
XXYZABCDEFGHIJKLMNOPQRSTUVW
YYZABCDEFGHIJKLMNOPQRSTUVWX
ZZABCDEFGHIJKLMNOPQRSTUVWXY

Example:

		      Plaintext: codmanacademy
		            Key: catcatcatcatc
       	             Ciphertext: EOWOAGCCTFEFA

Here is an applet for the Vigenere cipher.

Challenge 5: The following ciphertext is a message encrypted with the Vigenere cipher using the key dog. What is the message?

          ECYWCTPOYVOIKIYHHZVPJ


Text Slicing

Idea: If the key length for the Vigenere cipher is known to be some number n, the key can be determined by "slicing" the ciphertext into n components and performing frequency analysis.

Here is an applet for text slicing.

Challenge 6: The following ciphertext is a message encrypted with the Vigenere cipher using a 6-letter key. What is the key and what is the message? (Use the text slicer to slice the ciphertext into 6 parts and break up into groups to analyze the parts.)


YVHZI AVVHO OHTGH AFUWA DZEIG BWEIG DSFAM RUBHO
EFUOU KFBTC QQPRQ DOQTB FWVEO YXSWT ECQZL FIPCZ
EMNQU KKUCU JOYQC BPBHO TRFHK QMJKH KMNBV VHDAA
FHRMS FWAHM MBPUW TECQK HDSBH HKQEN THKFH RUSSM
RNVSD ZDRSI DXSGC HLANG QKKUC UVVHX AJUCI ZAGWF
HMNQQ TQMTH TSVSO QGBWU TYGHK QMNFS FQNGT SVBEP
VHRFH RQDLZ IBPGR RMNPY LZDEG EXURR UHKMT GJSBE
HBWZG PEPNO UQTUG QDGSR UKKUC UKASQ LGJSP FOGJS
VQPNT OWUOA YSKAL QVVHE EGTIW TSGQP HEEYH SYUDR
PHWTA GCZOY EACFH ORRCH HPEDW OOFHN VHKQY NTSHZ
DBYSG NYGJS LDCEG OWARJ KHKOE EVOLZ UACZL QNNDZ
HDITJ HVFHN VOPAN TVVHE ENTSO UFRNW EQRGA OQPTU
GDXDS HKHRR HNRDL ZEFUH KMTGQ GHOUE GHKQS RTWJT
TFICY QRAOS QFSNT SLZSG KHXFE QCARZ GZGBG QRVXW
QSTUG WUVUF VDRIE EUTUA MGJSF ANFGB WAFGJ SJAVR
TBHPT UCHZT EAGJH DAAAT RDMBH URHEE PAHZT OGQRY
EFFSV FRHEH LHEBH HKQSR GBGEI GKGWT EEKUK FOSVV
HBEBR ZHFON NHHDO EVCDN OYKGK UTNPR WAIAU HLFUG
GBHIG BXSUZ MRPHO MYVPU LFSSQ IQPAG KCQAN FWQKB
RVPQL BLRUO QPOEI OQUZV PULFS CQKHD SVPGX OHSQF
PMSGQ HKQMF JOOXS RGAPA SGNWN QLLVC HRFRE HWTEV
TGDRE GAOQP HNRDL ZEFUD UGDRP QHUNQ GSGII YNRLO
TNVSW TAGIC YQRAO SQFSY QBJQS GCPOU SUGRV TOHNR
QATOG QKMNT GRIAR YKUKF AAFHU MNFKS QFCNW GHEAA
FOFOO EFWQS LLCZO QXCGF LQNPG VDFHF JSZZT UCHPM
NXKBG MRROC UQDVU DREEQ VCVGF SGFZT IYGSY ULFCF
HEUSH SUMBY GHKMN GQFLS HGVVH YSRNJ HEBLC PRXIF
JWQST UGTRD MFVCZ TIPJH KQYNT SDOCH UHRYE QDIWI
HRPOO ANTVF DUNBH OEGSR UOQPU FWFSM TVQBV BUEUI
LZGVP JDDIN DZBFH RUOPQ OOLSF FEIKB FQSNF SVUGA
VCUQD HESWT EZWBG QRNDG RXUGG RHEPB VWVYI GKGWT
EVTFL SHGKH LETUG WUPUG AHRFH EQKRR FFWQK SOIGF
QYEAV OQPTB RFRHI QGBHI GHCFG EFBTH KQIEH IWGRR
USFGR VVMVG CUJOV NERPH KQPNV WHZTF WTIQR NPQHA
FGJSV QCBNC QUEFC BGEUP JWVZO JVVHZ EPGGV UTLYV
LOHPQ BVFRN KBVFH ROHRM LGGFW TEVTT RDMRT GBETR
OGRRG BXSUZ MRPHW TEUKG WARLQ TWTEC TSVQN GMWQS
OSIFH MTOTW WMIAK GDTIF VCUKO STSSQ AGGRL ZJHTW
HEAAF IVGRC CHLAN FCZOT AIKBJ UNQKF HOTBD XHOTG
JSHET NDZLE HZGBW AFNPO EEOYW HHFYE CBQKO IGFWT
EFGGW MTRUH RBRBX SWTIF NSWRA PVGEQ SHDAL FTRFH
RMCNP RLPWB TZGTE UCGUQ FHUSG TIFCG VQNGV COMWF
VVHYO FVKKA LRUCP QAAFB HOEFU OUKFB THKQP HDZLO
GBQRK QHNUT RDBVF RHZHV UURHE EPCUE TBROV ELNYG
RRIZO SGUAG GOQPP EGGVU NTKAS ARGCB FQUAN SVESH
UDHZD RFWQF HRKFR BEECH LANGK ZOTIF CGVQN GUVRG
LQDSR NTNKB HPAAF KKQNF QGXEP RPRHP HRJOV GTGGF
OKNRI ZHOTR FHRMT GGBGF OGJSP TEUCG UQFHU SGFOC
CGVAT UGFOM WFHCU FHRCQ FAMZQ RDFIB PCIXA EISGU
SGTWF FSBHD HAPYG IQXEF UHKAS RRSRB LRYCX XDEGZ
LZQHK GKFHR TWJTT BHFHB RRUSQ FAGKC QUNGJ SOQGV
UZDFU EGOUU GUVWQ QSGKA DNLRV CWTEZ CBGRO EOWGM
BYGHR FYECB WEOAN MKQHN UQDXL RFHRS EGJSU XETKG
OMTVX SEADV GGDFP YCQHE UAWGX MLHPQ RYFBT HDNLR
CBGPI FVOQF FEQAW TEQGD REIGQ FBAFG JSLDP HDZLO
RRECU PSSQF WTEFQ ZHBUE RCVQO SHOWU GHKBJ FHROW
QFOPQ ASXIN PQHII GJVLE MRCGX DEFJS KMSQK GVALI
GRUQP EGGHZ TNVWY QHBWG HERRR SDFEQ NMIAR BRDRE
IAIKL FHZCB OKFVT AQQSF JWVUN ICGLA NFQBW TEEKU
KFSBH HKQPR QDOQH RJOVD ESWGH PFBTO OANTV WPQAS
VSUEU PJRLE SBNIW UOAUH ROAHU SRFHR TGWAB RGZHO
TRFKK QRRDM WTEYG ULELN VWYQP BYSUE IAEOS MBYGC
IMNAK VLXAG KCQTA IGFHF UEPSG FOGJS SQOCN SDFLN
TUHRO EVVHU RRZSU OIFGH KQSGC HHDEZ CWQUN TKBWT
EZGOQ FIZGS ABOFG RWAAY NHKQD NPUHD SBHWQ HAFKC
QRRBO KLFHB WHDZD PQBYG LFKCQ EWVVV LZHRJ OVQNQ
GOYAU EGRWA PEGJH ZTGJS SAPHN OWUOA QTWTE FGGWM
TRUTR DTUCH SGRCQ GHABF VFXOT VPUWT EYCKV ROEPO
WGRNN WCMTV QBRRF BTSLS NRTGU QFHUW QSTBR OVEOG
JSUET BGBFA UECUH FHRKF PUGEC HLANF JWWTE ECBGD
AVUWQ STUGQ RZDVV WRZSB HBHIA CRFRB RVCHL ANFQT
OMNQU VHTAF QPVFR HEHHP TUGOG YIAKG WDAGK CQAFW
WGWUC RDMUQ FHUWQ SHVUO VEEAV HRXAJ UTRDE FVOEX
IFJWQ SJHFW FUAEA DRIEE UVHTA FOOGQ JHFUH EDRRS
QPEAV CQTIF YWOXA YQBHR OEVVH FEAWF HAFGJ SLDOS
HWFQS NPRWT ENOCX ZTNPR SMYZG BWAFG JSLDS NNOUU
EFJSK MSRTS FFEQC AXXTV VIGQO SPSZA FSKQH EAAFG
HZTUK HKQRF YOUYS BHCIR IPGFV FOUCF UMSFQ IUBEB
RZHMN QGOWA UGVVH URFWP VFAAE SKQHN UYHBT NOCQS
UFKBW UMRUC IBENE SVFAA FWQSA EOWHE WVVVR GTGJS
FANFG BWAFB WFOQG VUZDF UEGGK QHNUO IREPV SGFOE
GBGQR GJSPU LVVOU KIAFS SQNQG BWAFN PRVGP RTWRD
TBVVH OIIKZ SAWRT VHTAF ECPNI AGRZU TUQHK QRFVC
VGBWG QWGSG QOMGR VURLO TVQBI ARRKU QFOBW FFANF
VWWGT VQBDZ DHPOF WNBYZ HPGRF PBAUE NOZEG VXWQS
HVUOV EEAVH RFHRK FDOTF QTSDE GGBGQ DYGUL ELNVW
RZFBT EXMRG GFLZG YCFJQ BBFWH EOSCF PQDGT CRBSN
OCQSU FHCUB RBVSF FIAIH KQMOA OPACX VFLML STCPB
UAKGK YEAVT RDAAA AXDDR TGZTI PJHKQ YFJCX XDPQA
PUTBP HKQIA JOEUT NPHVA FGJSV QSGCH HEFBT QXFTV
PURRF BWFWD AQGKL FHNNZ SMRGU CIFHR YCUXD SQFLY
PBUWQ STNZS VANHU KLFHB WHRGR PQBVQ NGHCU PECTW
YUNTW GLZMN PMFMS RUCIF HRDSQ QFVVG RRTEK OONYW
WFBRO EVFDZ SCQFW UNTWG EQYBP RVQAF VCEQT EKSGR
OERFH FEAFS GAFSG BFQSS QFDNO YKGKU NTVVH RRRGG
BETRO CIQNT NWVTL NYGLZ AAGWJ TBBWF LZGCT CYUNP
GSVFA ONWVT IAIHK QRRKB DZAED WWDAE AURHE EPAHZ
TNPRH ZLNTU LZGVV GEAUA FOUUE FUCDE TBTSQ PEEKH
DFOAE SDZEK CASXE NPRIU TVPGW DUZGB WROEK BWDOQ
WQLZG GJSVM MRCPV ALHVS UGLRK BWATU GGHOO YQBLQ
SSQFW MKVPU DIALQ IUOHN THHDS NDCOU SUKBJ AUEOC
VFVNN IDNLR NOZEA AFOOF EEKBJ RUAFO PQNGC ZOKTU
GTRDM FQTRG RTQJH DNZGB WEFBT GXEPR PRLZG BWFRI
NYGUL ELNVI UQSNP RGQCY CFLZG GJSPE EYXSV UNIGG
WQDJK HKBOJ GFWAL RIWVX AGGTR DUFKB DXLPC GHEWU
CHVAE IGFKQ HNUOE PIPCH HPGBX SUZMR PHKQR RDMGQ
CYCFL ZGHUC XFOSJ WVBRB VSFFI BPOQP WNIWQ SWNTO
JMIAU HXEHR JOVBL HPRHD EQQIU EENUF DHATG RRGRP
QOVFS OWFQF OHTHR INFCB GPEFV FRKEQ VVHXI IGGRR
OHTDH APYGV HUSNV HKUSG KAHFR NPGSA RGKBJ XAEIS
DDMVG GRRFB TSLSN ZGFFQ NNTWH ETBEC PBLRC HWTEJ
QFNEO SFSDF HQGGR XAGKC QMNQV MUMNA AOODE NFMEQ
GHPKL FHPKF FGMFV OQOEF QTFDU RNHBB EEHWG KSPCF
FQLLR OUMLY GZHPI AVVHY OFVPD DBNTC XEATG GDZDG
QHDXL LWBZA RGJMW TEUGO GAFNE WYULV BSGZA GKCQT
EUCGF ANFVF DUNRF CXDFR NZRIC VVWCQ NFVON QNPCD
WUVRQ BWTEU KUKEE NUHRN ENTOU YSNIO LZSGV VHURP
QIQFR LVCEQ CBOSW TERZS FGTVQ BHDSB HHKQI EHFLQ
NQUOQ PBEGH KDEAQ FWAFN NZWTE ZUSOH EFDMW TEVTV
DZDFJ SKMSR ZQLFE QFCPQ SGKQL ZSHTF HOTVQ BVMMB
PUVFU FCBGT AFGBG QAIQI UQDGQ PUUNT QBWTE VPVDN
IGCBW EOSQI URRBP HLQRF VVHYE EEWOQ SFKBG UAAUO
YMGRU KKASR MBRIN EWZHA FJCFI MRRKG DZUAF WVFIA
IILEH RFRHE TEWQW UOAQT DXLNI SVEEK GGDZD PQBGU
TVQBV 


Graphical Analysis

Idea: If length for the Vigenere cipher is not known, we can use a graphical tool to experiment with different lengths to find a length for which the frequency analysis seems reasonable. This tool lets us find the key and decrypt the text at the same time!

Here is an applet for the graphical tool to break Vignere ciphers.

Challenge 7: Use the graphical tool to determine the key length and decrypt the following ciphertext message encrypted with the Vigenere cipher. What is the key and what is the message?

YYCCB BZYER VSZKJ ISJLK PGSBV NIZGB TJWBO VQCXQ
KJSPY WNGWI AGGCD IZKKO SPQAG QPRVY CEHZO KIRHJ
JSSXF YYGRA VGMER VLVWH NRFKF TFKOK HPUMB ZJLNP
URDTG YLMTH KWFLN UGGML XFYFF IOCMS WNUVY CHXDG
IAILY VVJKH CCQIT HOFNI VUPAH BGJVJ PPGUW NPASZ
WFHQQ WLPMI XVSVV BMFYC GNVRW XAGUE RLLBJ JMCGT
RIHHN VOEPL QGSMB HDYCD WTURT XSQJJ MGJRR IASEJ
HDBJL VJWYC ICIAS IRUHL QEZNW UKDNT EHNVM IVRPW
XYCCI YIBCT NEWVJ LLMYF GKPJM VYKOQ LQMDK YIKUC
CMHNR TPSJU WSUEG TPTTH KUEFB YTLMU GVYCN TFKVN
SVUMV GSGJV GGVFK RTDYU QLMWR TKYXG ITRLX LLITQ
YEKXF ILHNR TPTMV YYBRU VYGXZ OWEAP ZMJYS NPURW
XDAIS JPRWX MUCRZ LTLGZ YAIAM AWHOE GKFTL SXZGW
AQOGA YEPDC CMGGI EXUQB AYOGG UYBHB MDECK CZAAC
AIKFT BFPLS IWMEW WMSTF KIASI FNHLL BGKNU GXMKX
FTVDI OYBOM YAGMC GTBEW OGTMN YTPRT EKTGH HVCDT
CAVJM GTLAI BJKFF IOCAW JHQUZ RXLHN VRXNF BGKNU
GGCDI ZKKOP SRMJT LGQRZ DEWYY IIHLL LTCAU KGINH
KEELN MDWWH ZGERA TMOEG XAQNG ZHQCK GDGCT JURON
ZASWV RCCHT BJFRV HLQRN HTKKQ EHKKI SXUQC UMZBT
DYHMC ZYEBZ FIDQM RGDKD LHRZK TSWBG JZSGT RIASO
ISPMC BQFHQ JRNEB BKJSE YSLWS WRKEB TXRCZ LAKGK
LFNRV YYIZC BVRCT CVLXF BPXCH MOHCI HOCLK MIHNU
LDMPK THPUE MVKIE NZEWM OTUTG HLAAJ HGERS HXGGE
DPJAW JICAI CWPEZ KOPTY GMFHY UCKFH ASCET WHRUS
SEVPU YGXAU IESPQ XGXYQ VFQJY TKIWW PJMWA CYURP
TLILW EGHZT WYBNP KMGBU NKTWL KAWQP RUSWP UCRZS
WPLOL MYSQI KHMCC YIROR PWDUE GRARN GZFMT KZCLB
BRPRJ DGUZI AXUMN SGOFG JYCWI YLREH RQGSM CWIQJ
BBMZN KHPQS GFLVY CHTAK FBYLA BWACA EVQPW SYZGC
AMZWI OPGKF TFITU EGHZA GQOGG UCHIC ZZSBP RQKYB
RKIPX ZVZZT XZRPW NLQWK WIHHN IOLVD NKZWU IFTTK
BSVNI HLLLT JEQMG SXBKN GJHPL KKIEV YCXKT AKUGL
QMUZL VVPQJ VVNRS QLCVL MYCCK GTGHY LFULP IFHYB
HKFTL SIFLD UGMKF HQULA WBGTF WIOCV WHYFU ZRNPV
OTHRV LALWU VPJRW XAZFA AACZL MYVTW MGFSX JYHAC
UKTZT QMCGG AKETI OCPAX NBTPM UMVKG RTZCV LPCAI
FDVKS GKBGP RIASC FCYGH MCXPO UYCXW FNRFZ LYNFO
VSPUB CKZLC CKGDG GGCLW HTQFL CAFZP TVHUS JTJRB
ZJYFV RZABG NDECA MNSSU OUFJJ MSZPR PULGG AYEVY
CHXGZ RTTZR WHWII GKFXL ZKKFP JRATJ MHDDG IMSJK
OPJYV VNXJQ IJSAS NRSGL DCKJX UKJYH LSTKT DSYEK
YBROF QIPVU CEHVK MSSXA GTCHL OXPFD YRPWU OONZA
VHCJY EWHQN GWVVF UCCAW YXOKL PVGWM GQGYH LZGNS
DMGUE JXVCK CPGRV IEHZG VYNGC QIRPG QKLNA LQAKZ
MCGEB TWWTK HTPPW HJLNV ZMCMW RCHXZ YAKJH GUYMJ
ERHVO QAYQF JXNPU UWXBY FSJZN MFIYQ JVFPL IZKEG
SWVWL FREKC SMCGK TTUBB GYBRO YCWTG XVFJZ CLLTJ
NUJMI ASXCA LZDWJ YBRCT ADFAU UAIPM VGKFN TXCSB
GZIIR AQWXU YBRCC JGZKJ SIOMA WUYBR CCLHI RURTS
GVIZC FJKFT KWMYT DMPMH WYFGE RPMWU EICAF MDJAV
UCYIN FKRRX NFBAS YFVZK PUZKK OIOCU SSXSQ IKXWO
HCEIV RGJFH GUFLA RVKYA HJYTD JXGQX CIASX CEVPQ
TSYCI GSMSB SYRTE SYKWX OAWJS PEITT OBMMZ LFVYG
RLSWW YKACA DZGRN UGUCE HGOKO GFMNL MYVTG SQEWI
IERVP LKKIE VYCHH ZKGUG WMAWT ZSCKG VNWTX TWLKQ
FYIPQ DNABO TTELP RPZNM ZGRQJ KSYYE WHQLA XMBNM
CSKSV IEHLL BSYCI GYMJL SYIEE LYBWI FLHFP DIDUJ
ICNUQ LMGNP CWUBF SEEHZ FQKNH ICJGD GGUET WLPQY
MNFQW RWXDK FPALF MZFME GWSHX RLFRP SMVYY CZGRD
IXFYL CWKGA KTFHV ZMCLH UTAJZ CWLMY EUKMQ XSRVC
ILBEZ JLRDP RWXZK XIHSY BAAYC QNCGL WTTAE HZTWT
ZNPEG WBZGK IDUFI NJLRV LPCXR ZFTWL NMGUF RCKJP
KUKWO GAFMA WYKGI AXLSZ YEHAY BWWYZ CZLXG UOETW
LKMSS NVOVC MICYV DIVYT DYBRF RLVXF YFFXU TIKNI
AHIMB PWZYO JAYVV HIAXL JHBCT JWXAF QFMYU CJCCW
SGMOJ YCLLT JEGMC CMHNV PDWST SYCBP FDIAS YVSIH
RMKKI EVYYI IIXGO HLMJK YLHEK GCZHN VLPDQ NGWHN
VLPPE WFRTX VLWXK IEGZE CXFYI EUBQQ FLNBR RQHHH
NVRHA MMFHI HTRET MVKZR BPEZS YCBPJ FXMVK IACKP
IAXCA IKFTV CTUII PMVKT ZAGNY EIFUG RXHRQ GSMBH
CYCWG NVHPZ MJKYL HEKCS MVKRD BPLQK YLNVZ MCHTP
LSIPA MTDLR HLQXG UNZSP ZQMFY NBNRU HYCXV SIHZT
AXBVP XHJWW IZAGF NWOJL FJVFP LAGUE YBBOW XXRRV
LSXBZ FNWPQ EAQFN NFLTY CXKHT ACVMW YBHKF TBFUW
FXJCA SSXGJ VYBHI TKACK NIQRY AVFDI ASOIS PSYZA
JMUGY YHXFK TTTKY UMQNV VLBTH TTVWD MDQUJ MNPUQ
TGHNZ TWLPA OFLZU FDDYT OTEGZ RWZFL ECJQD NFVVO
ESCIF IYNVF SIMVK ZRHBZ ALFHP GYCWT GQVPI HKWFL
OFKER XFSYF FELYK WXNNP UGCZO XDITZ UQLMI HVKFT
VCTJE CAMNG ZLYGX GHEOZ LRTZF MZFMN HWCRM SJKOG
LLLWW NUGDG ABHGI YXUBM HJHQG ERDYO TUSJW CZATL
GQKFT VWBZL EVUMJ MYUCJ ADFPO EESDG BZTNU GIQIH
GASJT JRCKY INLLP XLROT TXVLN GWYVI ERDHI XTOCZ
RQLZN VQEYC WITRC ZUMED JXTGU ZNHIX CALZE QNNHT
JZQPL GKETI VRPWN LNEKQ DYDXV TTUBM VQYTK JJPMW
UEFDY OCSWN RTZLV EOXXE QVBQW XISCI KTWHX FOEZY
UGSAH UWMGI FUKER AGVYY BROSW PFCIB TGPYT XWIZR
LLXLV SVNIM MZSSS ZWIBT KGCYI RORPW DMUQL JSVCS
DIIVL BZJCA JRZXM OTKSD MRPWX YFVRR TLTUI CJARQ
FLISH FSGMF GUELP RPSQF CCIRH HTZYE LVPTV KIEKD
NDLWT XTPEC AGSOF YZRWH IZFUG JMVKJ HGHFP SXDXZ
VXUEC KNHZC EWRTG KJOUA FMTJH RHZRH HTZII PSZGB
ZLLHF PIKOT JPDYR QFLOF DVWDG RYVAH AMJWY LVGUD
DKDXV TTUBM VTZSG EATLT UIAQV JQKMC AIKFT YFKVS
NZRME TZRPX JXLVR RWHPL IFJCT JSMJK WTXPG VTQFH
YRUKY QEWYY ICNRP WWYVP RLPKP OKRPY WOGAY EPDCC
MOTUE CSYZY NHTKK QQHIT UAGPC AKTUF VFPTG RKIII
HRWFH YNPVV PFDRV ACKDQ LNHFV ISBXB ZWOGP LBJTX
HEZLV MVKJA BLYJK TFHVV PJESO ETDAF MKJWB NFLXX
GLFRI HIQFL UJCPM JKQNR RILPA SGIYK JFXGU ULRBV
QBNFF HCSJT EOCJA CKYTL JLVPX DJGRG DECAY TDDNU
GWMGF GUWOJ YEWNJ LAOVL ILTUI SJZNM FICAI FSGHK
TCEVP QTSYO EGJYC WRKTL PYGVY YBROJ CAOSY ZNKLQ
BWIQV VYNDP SXKOA LEQKQ UGGWM GNGOE AASAI KJMJJ
RRHHS BVRWL FIKFV QKTYI XRMFV TYLUW SNUGI CQRRK
TLPYG VYZMB WKMUA WYGRD ACKLN IACEB LTUOE GLHPI
YFCAU KSHAS NRSES SVVJL RFFSG LSGJR PCYOW IIHTT
MPLHY SUGUR WMWNB YEQPG RJVSI YMGWI NUGCG KXGUW
OJYNM GUFRJ VGHTH ZYIHA GUWYL NPJND KHOEG AHPOW
FLZKV QDYTU IEXNL UWWWR PRPXX GZFCD TNTWF NGJVU
DKYYF FSLYB ZIYFQ CYIBC TRNSA WZSSH LCCPT TRESE
VBLEA YBPKI AJFGZ RNRLQ WXHLH GCRNI SXWIS FQKSW
WRNPN PKORC EALBQ FYBRO FQIUO XSAGV SASLY FCEBI
HHGCL NBLEG WNUAK FTASG UOUHA QNNFV BVBCT HOFNW
LFIKH IAUKP PBBKU OJYDM DQIJE ZRXSS TJTPR CVUFJ
GKMCD GHNVH XNFAW FMGQS CPKOX DSPNY QFXNG JVGGV
CAETG FRWTJ WBOVR WXSDV CJAGW FJLFQ WRWXW XWRXL
LLKFH QDICI AFKEO GAMNS QFGJV KHXZB VSQFR PWNLU
CEBHA SNRST EAQLJ XQQDC HMWIZ NHBPZ WHNVQ EQPFC
TXSIB QIFIB NUVLS XOBFU GLBBG GLVPX MCMVK ZNWHZ
QLFHG UFDDN FLIOC AGMJX NUGDC GVWRV SHPLL AFHFC
MYVXG CYOHL IVGBH EWCCD YKGIF PYCQK FHHPU GHMWT
XUXZF MVIYF VISRM WUEOU HJTSL YFUVV TLOTU CDUBQ
LNIAU 

Acknowledgments:

All but the last applet on this page were adapted from http://pages.central.edu/emp/LintonT/classes/spring01/cryptography/cryptography.htm . The letter frequency information was found there as well.

The graphical tool for breaking Vigenere ciphers was found at http://math.ucsd.edu/~crypto/java/EARLYCIPHERS/Vigenere.html>.