Unknown 11-24-19

This one was a tough one to diagnose the type even though the correct type ranked fairly high in my analyzer. I needed the crib to solve it. It fit in multiple places.

Crib: APTLZAVTFWVVYZVUFVBYM

EGRXC TYNHQ TEBPQ XYKPB RYVYL FDYBY GFBVK AIMOS SLXUP SECOS WYCVJ CINTS ZGKPB RKEMC JXKGA UEIZX VAECV EUEQM VAKCB XRXRB FJTUL WTSAU ENFBM ITFGD F

Unknown 11/19/19

My Analyzer placed the correct type in 10th place. I had to peek at the type. Then my hillclimber didn’t solve it, so I had to place the crib. I finally solved it by key search.

glxnwolgkiwhmdgfeimkpeueyrvhoezbwsnqkqdepegmzfqkmqndvfdveqcrwpuyzfpixsxgwrrqlaphheesglvnkefbldke

crib: INXQNPJXGZYXMJ This fits several places but the correct placement seemed clear to me.

Tridigital 11-14-19

84621 27836 18660 14881 40968 61254 89609 46872 48400 25326 24225
38186 60140 34567 27124 20722 21614 61453 8161

The ciphertext is a sentence randomly chosen from gutenberg.org. My Recursion program found the correct full plaintext in less than 2 seconds without a crib after I manually replaced the separator digit with spaces. I had to determine the keys using separate programs and working by hand. I’ll provide a crib. One of the words uses the British spelling.

crib: HMZIVWI

The Power of Recursion

I wrote a few days ago about a recursive word-finding algorithm I used to solve Key Phrase ciphers. I’ve since learned that it works on simple substitution ciphers as long as word breaks are known and the words are in the reference list. Today I tried it on a Tridigital and it works there too once the blank digit is replaced with spaces.

In fact, the program is so fast that most times a sufficient solution appears on the screen in less than a second. I say sufficient, because there is usually something incorrect in the solution, typically one of the smaller words, e.g. “up” for “of” or “that” for “what.” Despite two or three of those, the overall meaning is clear and the wrong words can be easily replaced and the key determined.

Where it is slow is on those texts where the longest words are not near the top in the frequency lists, especially if they are not longer than eight letters. The program is likely to find a great many apparent solutions that are incorrect or simply finding many partially correct ones many levels deep before rejecting them.

I’ve found that tweaking the frequency lists to improve their accuracy makes a considerable difference. I’ve been using Google N-grams website to check my list data and found that even though I used Google’s data set, they don’t agree. There are several reasons for this such as Google measuring capitalized words differently from lower case and words with apostrophes as two words. I’ve been checking my list against a large text source I compiled made of dozens of books downloaded from gutenberg.org which also helps.

Keyphrase autosolver

I just made a breakthrough in solving Key Phrase ciphers. I’ve written a recursive program that finds solutions by trying words of the right length to match patterns of the ciphertext. I have the program order the ct words by length and start with the longest, working down to shortest, eliminating combos that create conflicts.

I got the program working a few days ago but when I tested it on E-6 in the ND19 issue, it ran painfully slow – too slow for any practical use. Today I made a breakthrough, by realizing that the trick was to require the program to try common words first rather than go through word lists in alphabetical order. I first had to write a program that orders all the words in each separate length list, e.g. A3.txt, etc., and measure the frequency of each word numerically, sort the list, then write them out by frequency, e.g. Fq3.txt. This way the program gets to the most likely combinations much more quickly. Once it gets a conflict-free solution, it displays the solution in the correct word order. I’ve found that it can find hundreds or thousands of “valid” solutions of this type, but the correct one is near the top.

I tested it on E6 and it solved it perfectly in less than 30 seconds. I’ve since tested it on two more (published below for you to solve) and in each case it solved the cipher in less than ten seconds. The biggest problem is that it doesn’t judge whether the key is a valid sentence, so it may find several valid solutions consisting of one or a few words that are more common than the correct plaintext one. For example, in E6 it found solutions placing the word BY where the correct word should be UP. I may fine tune the program to score the solutions in some fashion to solve this. In the second example below, the 5th word proved to be the weak point, as it found 129 valid solutions before finding that one, all in a matter of seconds. As a practical matter this weakness is probably unimportant most of the time because by the time it has correctly identified the largest words, it is obvious to the user which words are valid and it is easy to reconstruct the key by hand and finish those dubious words.

Another weakness is its dependence on all the words being in my word lists. Proper nouns, new slang terms, hyphenated words, etc. may foul it up. I haven’t tested that type of plaintext, but I’ll be experimenting over the next few days. Okay, here are the two test encryptions I used. All the words are in normal word lists. No cribs are provided.

Test Keyphrase 1: FNENEA HNNEAEFE HGGRSHITAE EEEIHIT ENE TE IEF ENSSRIHETAHNI ETAEGGHAE TETBE ANFTFB HAE THTT NFHHA HI ELTEE

Test Keyphrase 2: HNYDIR ONIR H HWDDNDR RHND NWRWRAWN OKHO OKW YWRNWO IO H KHDDR RHNNNHRW NY OKNWW ENOOEW HINDY RINNW NNRKO DWHN

Unknown 10-27-19

My Analyzer did not put the correct type in the top three, but I was able to guess the correct type. I solved it interactively. I’ll include a crib

ujkxtujaisdynumowteosxeyfarkjflxqedlwgrfcxqyclyiexiihqudpavbchkicizkrsujkdtbigziuwlrfcjafslehtczwjnufecqiamfvstqenxirfrcbbcjjlgrxlayfpi

crib: KLVZRUNZRXOGKDYH

Unknown 10-26-19

My programs identified and solved this one without need for a crib, but I’ll provide one in Caesar form.

JAOOS RWJDL ZDBTD NTVUU TJNNE XTHVY JTXAU YEOPU TMBGQ CJBBJ ZQGKV THWKB WJEYB DTJVS AXBJO SAUUT KIEVI PVVSA XTEUG YAWJG VUTXA UYCPT BLUYN ZTUTU DAJOS TDPDH PDFPT BEYEP OBHPS

crib: NOYZUXE