Ciphers

Nihilist

Polybius numbers plus a repeating keyword, added the plain way. A 106 in the ciphertext says more than it should.
IDnihilist16 / 58classical · fractionation
Cipher / Fractionation

Nihilist

Square numbers plus a keyword, no wrap at 100.

Keyspace
25! squares times 25^n keys of n letters
Decode
same options back
Works on
A-Z, J as I, the rest dropped
Family
9 in fractionation
required 1 / 2

Options

keystring
required
Keyword whose letters, as square numbers, add to the text in turn
squarestring
optional
Optional keyword for the 5×5 square, the rest of A-Z after it, I/J shared

Access

Createcreate("nihilist")
CLIciphers encode nihilist 'DYNAMITE WINTER PALACE' --key RUSSIAN --square ZEBRAS
Tryplayground with the sample above
Kinpolybius, morse, bacon, tap-code +4

Russian Nihilists used this one in the 1880s against the tsar. It's a Polybius square with a second keyword on top. Every letter becomes its row and column, say 23. The key letter under it becomes a number too. Add the two. That's the ciphertext. Pencil and a scrap of paper, nothing more.

Two keywords

square builds the 5×5 grid. Keyword first, then the rest of A-Z, I and J sharing a cell. Leave it out and you get the plain square. key is the additive. Its letters become numbers through the same square and repeat for as long as the text goes. Wikipedia's example uses both:

ts
const nihilist = create("nihilist");
const keys = { key: "RUSSIAN", square: "ZEBRAS" };
nihilist.encode("DYNAMITE WINTER PALACE", keys).text;
// "37 106 62 36 67 47 86 26 104 53 62 77 27 55 57 66 55 36 54 27"
nihilist.decode("37 106 62 36 67", keys).text; // "DYNAM"

Yes, 106. Y sits at 55, U at 51, and nobody wraps the sum. Why would they? Pencil arithmetic doesn't do modulo.

Numbers back to letters

Encoding drops everything that isn't a letter and folds J into I. Out come numbers with single spaces. Decoding reads every run of digits, so spaces, commas and line breaks all work. Each number minus its key number has to land on a cell, 11 to 55. If it doesn't, you get a CipherError that names the number. Usually that's the wrong key. Or someone wrapped at 100 after all.

Spotting one

So what gives a Nihilist away? Every number sits between 22 and 110, and none ends in 1. Two digits from 1 to 5 never add up to 1 or 11. guess names Nihilist on that, but never above medium. Decimal character codes can pass the same test.

The 106 is bad news for the sender. Anything over 100 means both letters came from the fifth row. Underneath it's a Vigenère in numbers, and it falls to the same column attack. Wikipedia calls it "little more than a numerical version of the Vigenère cipher". Fair.