ForHosting KIT · Developer Utilities

VIC cipher

Encrypts ATTACK AT DAWN with the board key COMPUTERS, null digits 37 and the keys ORANGE and BLUE into 61363 17174 31939 70373 3916, and decrypts it back. It pairs the straddling checkerboard with two chained column transpositions, like the classic hand cipher. Free in your browser.

  • Free
  • Runs in your browser
  • No sign-up
  • Your data stays on your device
Use it from WebAPIEmailTelegramApp soon
If you enter
Text
ATTACK AT DAWN
Board key
COMPUTERS
Nulls
37
Key
ORANGE
Key2
BLUE
Calculation mode
Encrypt
You get
Result
61363 17174 31939 70373 3916
Length
28
Symbols mapped
14
Digit stream
316631039793167933317471

The VIC cipher is a classical hand system best known from mid-twentieth-century tradecraft: it combines a straddling checkerboard, which maps letters to a mixed single-digit and two-digit stream, with two chained columnar transpositions that scramble that digit stream before it is written in five-digit groups. This landing implements a clear educational profile of that pipeline so students, CTF players, and curriculum authors can encrypt and decrypt with shared keys without inventing ad-hoc scripts. You supply the plain text or digit ciphertext, a board keyword, two distinct null digits for the checkerboard blanks, and two non-empty transposition keywords, then choose encrypt or decrypt.

How the straddling checkerboard and chained transpositions work

Start with a board keyword. Unique Latin letters from that keyword are written first into a twenty-eight-cell fill order, then the remaining letters of the alphabet, then period and slash so spaces and sentence ends have explicit codes. Two distinct null digits mark blank columns in the top row of a ten-column checkerboard; those eight filled top cells become single-digit codes, while the two null digits label the body rows that hold the remaining twenty symbols as two-digit codes.

Encryption walks the normalized plaintext once: letters are uppercased, spaces become slash, periods stay, and other characters are skipped. Each symbol is replaced by its one-digit or two-digit board code and the codes are concatenated into a continuous digit stream. That stream is written into a grid whose width equals the first transposition keyword length, then columns are read in Unicode order of the key characters with left-to-right stable ties.

The intermediate digit string is transposed again with the second keyword using the same rule. The final stream is emitted in classic groups of five digits separated by spaces so it is easy to copy by hand. Decrypting strips non-digits, undoes the second transposition, undoes the first, then greedily decodes single-digit codes before two-digit codes on the same board.

The path uses no network, no Date, and no randomness. This landing implements educational VIC with double columnar chaining only, not the full historical personal-number key schedule, not interrupted columnar variants, and not automatic recovery of unknown keys.

Where VIC cipher tools show up in real work

Introductory cryptography and intelligence-history courses assign VIC-style drills so students practice combining a straddling substitution table with sequential transpositions before they meet modern stream and block ciphers; a single trusted oracle that encrypts and decrypts with documented board and key rules speeds homework demos and auto-graders. Capture-the-flag warm-ups and puzzle hunts still hide five-digit-group streams that reverse only when the board keyword, null pair, and both transposition keys are known, and solvers want a fast, predictable tool rather than a general cryptanalysis suite.

Support and content teams sometimes lightly encode spoilers or internal labels as digit groups and need the reverse path without installing a language-specific crypto library. If you need a plain columnar transposition without a checkerboard, double columnar alone, Nihilist Polybius-plus-add, Bifid fractionation, or automatic frequency-analysis recovery of unknown keys, treat those as separate search intents and landings rather than overloading this educational VIC cipher page.

Classroom VIC and tradecraft demos

Encrypt and decrypt sample messages with a board keyword, null digits, and two transposition keys so intro-crypto and history lessons share one ground-truth VIC pipeline.

Puzzle and CTF digit-stream challenges

Encode or reverse five-digit-group VIC streams on challenge strings without writing a one-off script for every problem set.

What is the VIC cipher on this page?

An educational hand-cipher profile: a straddling checkerboard maps letters to mixed single-digit and two-digit codes, then two chained columnar transpositions scramble the digit stream. Ciphertext is shown in groups of five digits.

How do I decrypt a digit stream?

The tool undoes key2, then key, then decodes the checkerboard greedily.

What does it cost?

The browser tool is free and runs locally.

What are the two null digits for?

They mark the two blank cells in the top row of the ten-column checkerboard. The eight filled top cells become one-digit codes, and the two null digits label the rows holding the other twenty symbols as two-digit codes. They must differ, such as 37.

Which characters survive encryption?

Latin letters A to Z, in either case, plus the period. Spaces become a slash on the board, so word breaks come back when you decrypt, while digits, accented letters and other symbols are skipped.

Everything on this page is available programmatically. This section is for teams who want to wire it into their own systems; everyone else can just use the tool above.

POSThttps://api.kit.forhosting.com/enc/vic-cipher

Prefer to automate it? One authenticated POST creates the task; the result comes back by webhook or a signed link. The same capability also runs here on the web, by email and from Telegram — and soon from our app too.

curl -X POST https://api.kit.forhosting.com/enc/vic-cipher \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"text":"ATTACK AT DAWN","board_key":"COMPUTERS","nulls":"37","key":"ORANGE","key2":"BLUE"}'
{
  "text": "ATTACK AT DAWN",
  "board_key": "COMPUTERS",
  "nulls": "37",
  "key": "ORANGE",
  "key2": "BLUE"
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "enc.vic_cipher",
  "status": "queued",
  "_links": {
    "result": "/tasks/tsk_…/result"
  }
}

The API is asynchronous: the call returns a task_id immediately and the result arrives by webhook. Polling is capped at 1 req/s per task.

Per request$0.002

Published price — no tokens, no invented credits. A failed task is never charged.

HTTPCodeMeaning
401unauthorizedMissing or invalid API key.
402insufficient_balanceYour balance doesn't cover the task price.
404unknown_typeThat task type doesn't exist.
429rate_limitedToo many requests. Use the webhook instead of polling.

Empty keys, letter-free board keywords, and identical null digits fail immediately with invalid_input so a blank secret is never treated as a silent no-op.

How the straddling checkerboard and chained transpositions work

There is no modern padding, no authenticity tag, and no random nonce—identical text, board key, nulls, keys, and mode always yield identical JSON.

What you send and what you get back

Send a required string field named text, a required board_key for the straddling checkerboard, a required nulls string with two distinct digits such as thirty-seven, a required key for the first columnar pass, a required key2 for the second pass, and an optional mode set to encrypt or decrypt. When mode is omitted, encrypt is the default so a minimal payload still does useful work. On success the response echoes mode, text, board_key, nulls, key, and key2; returns result as grouped ciphertext digits or recovered plaintext with spaces restored from slash; length of that result; symbols_mapped as how many board symbols were encoded or decoded; digit_stream and the intermediate after_first_transposition and after_second_transposition strings; column_order_1 and column_order_2; compact checkerboard_row0 through checkerboard_row2 plus single_digits; and cipher set to vic with a short formula string. Missing fields, empty text, empty board_key or letter-free board keywords, empty key or key2, nulls that are not two distinct digits, unsupported mode values, strings longer than the documented maximum, decrypt payloads without digits, and digit streams that do not reverse to valid board codes all fail with invalid_input and a clear English message. Validation failures do not consume prepaid balance. Classic checks include encrypting ATTACK AT DAWN with board_key COMPUTERS, nulls thirty-seven, key ORANGE, and key2 BLUE into a five-digit-group stream, decrypting that stream back to ATTACK AT DAWN, and confirming that an empty key is rejected rather than treated as a zero-width transposition. Pricing for successful API calls is the published base of $0.002 per item.

Where VIC cipher tools show up in real work

Because this capability is a pure parse engine, API pricing is the published base of $0.002 per successful item and failed validation does not consume balance.

Golden fixtures for multi-stage ciphers

Generate stable checkerboard-plus-double-transposition vectors for graders, notebooks, and regression tests in browser or API.

What are board_key, nulls, key, and key2?

board_key fills the checkerboard alphabet order. nulls are two distinct digits for the blank top-row columns and body-row labels. key and key2 are the first and second columnar transposition keywords, applied in that order on encrypt and reversed on decrypt.

Why does an empty key fail?

board_key must contain Latin letters, nulls must be two distinct digits, and both key and key2 must be non-empty. Empty or invalid secrets return invalid_input so a blank secret is never treated as a valid operation.

Read the full KIT documentation →