Tool to decrypt / encrypt with Vic. The Vic cipher (named after a Soviet spy named Victor) is a figure attached to the Nihilists, combining several cryptographic techniques.

VIC Cipher - dCode

Tag(s) : Substitution Cipher, GRID_CIPHER

dCode is free and its tools are a valuable help in games, maths, geocaching, puzzles and problems to solve every day!

A suggestion ? a feedback ? a bug ? an idea ? *Write to dCode*!

The VIC cipher is a substitution cipher with an overencryption using transposition, named after a spy called *Victor*.

Vic encryption starts with the creation of a grid called **Straddling Checkerboard** generated from a deranged alphabet (see below on how to create it)

__Example:__ The following grid (with the numbers `2` and `6` and an upside-down deranged alphabet complemented by `.` and `/`)

\ | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
---|---|---|---|---|---|---|---|---|---|---|

. | / | ␣ | Z | Y | X | ␣ | W | V | U | |

2 | T | S | R | Q | P | O | N | M | L | K |

6 | J | I | H | G | F | E | D | C | B | A |

Each character is then associated with its coordinates (row, column), so the plain message can then be coded numerically by following these associations.

__Example:__ The text `VICTOR` is coded `8,61,67,20,25,22` or `86167202522` (by concatenation)

The Vic cipher may end there, but an over-encryption is possible by using a numeric key that will be added, digit after digit, modulo 10.

__Example:__ The key `0248` is used, the over-encrypted code becomes `88547240546` via the calculation:

Cipher message | 8 | 6 | 1 | 6 | 7 | 2 | 0 | 2 | 5 | 2 | 2 |

Key (repeated) | 0 | 2 | 4 | 8 | 0 | 2 | 4 | 8 | 0 | 2 | 4 |

Addition (mod 10) | 8 | 8 | 5 | 4 | 7 | 4 | 4 | 0 | 5 | 4 | 6 |

A final step, optional, is to convert the numbers obtained into letters, via the checkerboard / grid.

If the last digit corresponds to a row identifier of the grid, then add another digit randomly to make this last step possible. The consequence is that the decoded message will have a superfluous extra letter.

__Example:__ `8` => `V`, `5` => `X`, etc. (the last digit `6` does not exist, but, for example, `60` exists) to get the final message `VVXYWYY.XYJ`

The Vic decryption requires to know the grid (or checkerboard) used during the encryption.

__Example:__

\ | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
---|---|---|---|---|---|---|---|---|---|---|

P | ␣ | I | A | ␣ | B | C | D | E | F | |

1 | G | H | J | K | L | M | N | O | Q | R |

4 | S | T | U | V | W | X | Y | Z | . | / |

The encrypted message may be in numeric or alphabetic form (depending on the optional steps selected during encryption).

If the message is alphabetic, then convert it to numeric via the grid (row, column coordinates) otherwise skip this step

__Example:__ The message `DMPBDBFEU` is then translated to `71505759842`

If the encryption used a numeric key, then subtract it digit after digit, via a subtraction modulo 10.

__Example:__ The key `314` was used, the result of the subtraction is then `40247328417` via the calculation:

Cipher message | 7 | 1 | 5 | 0 | 5 | 7 | 5 | 9 | 8 | 4 | 8 |

Key (repeated) | 3 | 1 | 4 | 3 | 1 | 4 | 3 | 1 | 4 | 3 | 1 |

Subtraction (mod 10) | 4 | 0 | 1 | 7 | 4 | 3 | 2 | 8 | 4 | 1 | 7 |

Transcribe the numeric code into letters via the grid using the coordinates (row, column) to get the plain message.

__Example:__ `40` => `S`, `17` => `O`, `43` => `V`, `2` => `I`, `8` => `E`, `41` => `T`, `7` => `D` soit `SOVIET` (+`D`, the last letter is a residue)

The grid / checkerboard contains an alphabet of 28 characters over 3 rows and 10 columns marked with numerical coordinates. By default, the 28 characters are `ABCDEFGHIJKLMNOPQRSTUVWXYZ` and the characters `.` (dot) and `/` (slash) in a random or predefined order (refer to the generation of deranged alphabets). The column coordinates ranges from `0` to `9` (`0`, `1`, `2`, `3`, `4`, `5`, `6`, `7`, `8`, `9`) and the coordinates of the rows ranges from `0` to `2` (`0`, `1`, `2`), but it is common not to display the `0` and to use 2 others numbers instead of `1` and `2` to make encryption more complex. The grid is filled with the 28 characters, that is 1 character per box except for the coordinates `0,1` and `0,2` (where '0, x' are the figures chosen previously for the row numbers).

__Example:__ The alphabet `AZERTYUIOPQSDFGHJKLMWXCVBN./` combined with the numbers `3` and `7` make it possible to create the grid

\ | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
---|---|---|---|---|---|---|---|---|---|---|

A | Z | E | ␣ | R | T | Y | ␣ | U | I | |

3 | O | P | Q | S | D | F | G | H | J | K |

7 | L | M | W | X | C | V | B | N | . | / |

This grid makes it possible to generate associations between numbers (coordinate row, column) and characters, these associations are used for the encryption and the decryption.

__Example:__ `Z` is associated with `1` (the characters of the first row are associated with a number), `B` is associated with `76` (the characters of the other rows have 2 digits)

A message encrypted by Vic is either numeric or alphabetic (+ the two characters `.` and `/`).

If the message is numeric and without a key, it contains 2 digits that have a higher occurrence frequency than the others (the 2 digits of the grid).

If the message is alphabetical, it contains 8 characters with a frequency higher than the others (those of the first row of the grid).

The story of this cipher is in part linked to a microfilm found in a coin by a Brooklyn newspapers' boy who had never been deciphered until a Russian spy, named Reino Häyhänen, described its encryption system to the FBI. Any reference to a microfilm, New York or a newspaper delivery man is a clue.

The knowledge of the grid is almost indispensable, the number of grid possibilities is of the order of 10^30. Brute force attack is therefore deprecated, unless the grid is generated from a single common keyword.

The key can be bruteforced if it is short, the number of attempts is 10^(key size).

The Vic cipher has several optional steps, depending on their application, the results may be different.

The Vic cipher being of Russian origin, it is often associated with the nihilist cipher of which it is itself considered as a variant.

The use of Vic cipher was established in the 1950s, its first traces date back to 1953 where US intelligence associated it with the Russian (Soviet Union) spy Reino Häyhänen, known as `Victor`.

dCode retains ownership of the "VIC Cipher" source code. Except explicit open source licence (indicated Creative Commons / free), the "VIC Cipher" algorithm, the applet or snippet (converter, solver, encryption / decryption, encoding / decoding, ciphering / deciphering, breaker, translator), or the "VIC Cipher" functions (calculate, convert, solve, decrypt / encrypt, decipher / cipher, decode / encode, translate) written in any informatic language (Python, Java, PHP, C#, Javascript, Matlab, etc.) and all data download, script, or API access for "VIC Cipher" are not public, same for offline use on PC, mobile, tablet, iPhone or Android app!

Reminder : dCode is free to use.

The copy-paste of the page "VIC Cipher" or any of its results, is allowed (even for commercial purposes) as long as you cite dCode!

Exporting results as a .csv or .txt file is free by clicking on the *export* icon

Cite as source (bibliography):

*VIC Cipher* on dCode.fr [online website], retrieved on 2023-12-03,

- VIC Cipher Decoder
- Vic Cipher Encoder
- What is the Vic cipher? (Definition)
- How to encrypt using Vic cipher?
- How to decrypt Vic cipher?
- How to generate the Vic grid/checkerboard?
- How to recognize a Vic ciphertext?
- How to decipher Vic without the grid?
- How to decipher Vic without the key?
- What are the variants of the Vic cipher?
- When was Vic cipher invented?

vic,victor,nihilist,russian,spy,soviet,checkerboard,hayhanen,microfilm

https://www.dcode.fr/vic-cipher

© 2023 dCode — The ultimate 'toolkit' to solve every games / riddles / geocaching / CTF.

Feedback