The AMSCO Cipher

AMSCO is an incomplete columnar transposition cipher. A bit to unpack there, but basically that means that you’re putting the message into columns and those columns may not have equal lengths. It was invented by an A.M. Scott in the 19th century, but strangely there is almost nothing online about him.

The AMSCO cipher has two main components. The first is the plain text you wish to encrypt. The second is the numeric key. The key can be a max length of 9 and must contain the numbers 1-n, with n being the length of the key. 1234 and 4132 would both be valid keys, but 1245 would not.

To encrypt text with an AMSCO cipher a table is created with the key as the head and the plain text separated in a specific pattern. It is split in alternating chunks of two and one characters across the rows with the first row starting with two characters and then each row after that alternating between one and two characters. If the key length is even the last chunk size in a row will be equal to the first chunk size in the following row. It is important that the chunk size alternates along the column.

For example, if our key is 4132 and our plain text is “On the other side of the screen, it all looks so easy”:

4 1 3 2
on t he o
t he r si
de o ft h
e sc r ee
ni t al l
l oo k ss
oe a sy

If you look at the structure of that table, you’ll see that not all the columns are of the same length. The chunk size has the above mentioned alternating pattern:

4 1 3 2
2 1 2 1
1 2 1 2
2 1 2 1
1 2 1 2
2 1 2 1
1 2 1 2
2 1 2 1
1 2 1

To encrypt the message, you combine text moving down the columns based on the order of the key. You start with the column “1” (the second column in this example), move on to column “2” (the fourth column), and so on.

The original message, when stripped of punctuation and its text is normalized:


The encrypted message:


As with any transposition cipher, the frequency count and monographic IC will look like that of plain English. Because this is a transposition cipher, knowing the existence of a single word in the original text could allow us to suss out the entire message, because it could reveal the column structure.

Working on creating some proper code to make the cipher actually usable, but this is a working version of it in Javascript. Requires lodash (npm install lodash).

This entry was posted in Ciphers, Crypto and tagged , , , . Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *