PolyCrypt is the "Human Mode" encryption suite featured in Privacy Bar, PassLok, URSA, and KyberLock.
It serves as both a secure field cipher and a cryptographic sandbox, allowing users to experiment with manual substitution, transposition, and mathematical additions/subtractions used throughout history.
The 6-Key Architecture
Keys 1-4 (Substitution): These keys are compressed via serpentine operations to generate custom headers for the Tabula Recta.
Key 5 (Keystream Seed): This provides the starting value (seed) or mask for the pseudo-random keystream.
Key 6 (Transposition): This key is used for a final columnar transposition to further scramble the ciphertext. Not used by the apps listed above.
The Encryption Workflow
Entropy Concentration: Keys 1-4 are compressed to ensure maximum security per character.
Keystream Generation: A pseudo-random stream is produced using a lagged Fibonacci generator, which automates substitutions through the Tabula Recta.
Plaintext Hardening: Before encryption, the plaintext is processed with an optional space-preservation "trick" and an optional random "cut" with reversal.
Synthesis & Decryption: The message and keystream are combined to produce ciphertext. Decryption reverses the process by reconstructing the keystream from the seed and undoing the plaintext formatting tricks.
PolyCrypt Manual Instructions
Phase 1: Key Compression (Keys 1-4)
The Grid: Remove spaces and punctuation from Keys 1-4. Write each into a table with 25 columns, filling row-by-row.
The Lookup: Using a standard (unscrambled) Tabula Recta, perform a "serpentine" for each column. Start at the top header with the first letter of the column, move down to the second, then sideways to the third, continuing until the column is exhausted.
The Result: Read the final letter perpendicularly at the nearest edge. This 25-letter result is your Compressed Key.
Phase 2: Scrambling the Alphabets (Headers)
Unique Sequence: Write your Compressed Key letters in order. Replace any duplicates with the first available preceding letter in the alphabet (wrap A to Z).
Fill the Rest: Complete the 26-letter set by writing all unused letters in reverse alphabetical order (Z to A).
Assign Headers: Place these four alphabets on the edges of your Tabula Recta:
Alpha 1: Lower Top Header
Alpha 2: Left Side Header
Alpha 3: Extreme Top Header
Alpha 4: Right Side and Bottom Headers
Phase 3: Text Preparation (Optional)
Substitutions: Numbers become A - J, Q becomes K, and spaces/punctuation become Q.
The Cut: Split the text at a random spot, swap the halves, and insert "POLYCRYPT" at the seam to hide the message structure.
Phase 4: Initializing the Work Table (The Seed)
Create a table with 3 rows. The first step is to generate the Seed in Row 1.
Generate the Seed: Combine your Nonce and Key 5 to find the starting letters of Row 1:
Find the Nonce letter on Alpha 2 (Left).
Move horizontally to the Key 5 letter.
Read the resulting Seed letter at the Top (Alpha 1) and write it in Row 1.
Fill Row 1: Write your Plaintext (or Ciphertext) immediately to the right of the Seed in Row 1.
Start Row 2: Write Key 5 at the beginning of Row 2 (directly below the Seed).
Phase 5: Extending the Keystream
Fill the remainder of Row 2 to complete the keystream.
Interval: Calculate the tap distance using the formula: Interval = (seedLength - 1) / (numLetters - 1)
The "Taps": To create a new letter for Row 2, select numLetters from the existing keystream (starting from the Row 1 Seed, then moving into Row 2). These letters must be separated by the Interval distance.
The Lookup: Find the first "tap" letter on the Extreme Top (Alpha 3). Move through the Tabula Recta to find the second "tap," then the third, until all taps are visited.
The Result: Read the final result on the Alpha 4 (Right or Bottom) and write it in the next Row 2 slot.
Phase 6: Encryption & Decryption Lookups
If numLetters is 2, use a simple pair lookup. For higher numbers, use a Serpentine movement through the Tabula Recta.
To Encrypt: Find the Row 1 letter on Alpha 1 (Top). Move through the grid to find the Row 2 letters involved. Read the final result on Alpha 2 (Left) and write it in Row 3.
To Decrypt: Find the Row 3 letter on Alpha 2 (Left). Move through the grid to find the Row 2 letters. Read the final result on Alpha 1 (Top) and write it in Row 1.
Phase 7: Transposition & Post-Processing
Transposition (Optional): Number Key 6 letters alphabetically (duplicates are numbered right-to-left). Write ciphertext in rows under the key and read it out by columns in numerical order.
Decryption Recovery: Undo the "POLYCRYPT" cut, change QQ to ". ", Q to " ", and KU + [Vowel] back to QU.
Tabula Recta
The Tabula Recta grid serves as the core engine for both key preparation and message processing.
Key Compression: This initial phase must be performed using the standard, unmixed headers (the original first row and column of the grid).
Cipher Operations: All subsequent encryption, decryption, and keystream steps are conducted using the mixed alphabets derived from your keys.
Field Resource: For manual "pencil and paper" operations, a printable version of the grid on gridded paper is available here:
Printable Tabula Recta.
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
---------------------------------------------------
A | A B C D E F G H I J K L M N O P Q R S T U V W X Y Z | A
B | B C D E F G H I J K L M N O P Q R S T U V W X Y Z A | B
C | C D E F G H I J K L M N O P Q R S T U V W X Y Z A B | C
D | D E F G H I J K L M N O P Q R S T U V W X Y Z A B C | D
E | E F G H I J K L M N O P Q R S T U V W X Y Z A B C D | E
F | F G H I J K L M N O P Q R S T U V W X Y Z A B C D E | F
G | G H I J K L M N O P Q R S T U V W X Y Z A B C D E F | G
H | H I J K L M N O P Q R S T U V W X Y Z A B C D E F G | H
I | I J K L M N O P Q R S T U V W X Y Z A B C D E F G H | I
J | J K L M N O P Q R S T U V W X Y Z A B C D E F G H I | J
K | K L M N O P Q R S T U V W X Y Z A B C D E F G H I J | K
L | L M N O P Q R S T U V W X Y Z A B C D E F G H I J K | L
M | M N O P Q R S T U V W X Y Z A B C D E F G H I J K L | M
N | N O P Q R S T U V W X Y Z A B C D E F G H I J K L M | N
O | O P Q R S T U V W X Y Z A B C D E F G H I J K L M N | O
P | P Q R S T U V W X Y Z A B C D E F G H I J K L M N O | P
Q | Q R S T U V W X Y Z A B C D E F G H I J K L M N O P | Q
R | R S T U V W X Y Z A B C D E F G H I J K L M N O P Q | R
S | S T U V W X Y Z A B C D E F G H I J K L M N O P Q R | S
T | T U V W X Y Z A B C D E F G H I J K L M N O P Q R S | T
U | U V W X Y Z A B C D E F G H I J K L M N O P Q R S T | U
V | V W X Y Z A B C D E F G H I J K L M N O P Q R S T U | V
W | W X Y Z A B C D E F G H I J K L M N O P Q R S T U V | W
X | X Y Z A B C D E F G H I J K L M N O P Q R S T U V W | X
Y | Y Z A B C D E F G H I J K L M N O P Q R S T U V W X | Y
Z | Z A B C D E F G H I J K L M N O P Q R S T U V W X Y | Z
---------------------------------------------------
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
Step 1. Tabula preparation
The straight alphabet is used if a box is left empty for keys 1 through 4.
Key 1 (top substitution)
Key 2 (left substitution)
Key 3 (top of top substitution)
Key 4 (right and bottom substitution)
Key 5 & Seeding Options
Key 5 serves as the foundation for your keystream. If this field is left blank, the system defaults to using Key 1.
Length Requirement: Key 5 must be at least as long as the number of "tap" letters (numLetters) selected for keystream generation.
Seeding Modes:
Straight Seed: Uses Key 5 directly as the starting seed for the keystream.
Random Seed Mask: Uses Key 5 as a protective mask for a random seed attached to the ciphertext.
Nonce: Combines Key 5 with a unique, one-time value (Nonce) to ensure every message remains unique. Choosing this opens an additional field to enter or generate a random nonce.
Key 5 (seed)
Use Key 5 as Seed
Use Key 5 as Mask for Random Seed
Use Nonce
Nonce/Seed
If you are using a nonce or seed, enter it here, or click the button to make a random one. Seeds should be random always, but nonces only need to be different across messages.
Key 6 (transposition)
Phase 1: Key Compression & Mixed Alphabets
This initial step prepares Keys 1–4 by concentrating their entropy into 25-letter strings.
The 25-Column Grid: Each key is organized into a table with 25 columns, filling the cells row-by-row until the key is exhausted.
Serpentine Operation: A vertical "serpentine" lookup is performed on each resulting column to extract a single high-security character.
Visual Verification: The workboxes below display the step-by-step operations for each key, culminating in the Mixed Alphabets that serve as your Tabula Recta headers.
Compressed Key 1 -> Mixed Alphabet 1
Compressed Key 2 -> Mixed Alphabet 2
Compressed Key 3 -> Mixed Alphabet 3
Compressed Key 4 -> Mixed Alphabet 4
Alphabet Generation & Placement
Compressed keys are transformed into Scrambled Alphabets to serve as unique Tabula Recta headers.
Scrambling Logic
Unique Sequence: Write the letters of the compressed key in the order they appear.
Duplicate Handling: If a letter is already used, replace it with the first available letter preceding it in the standard alphabet (wrapping from A to Z if necessary).
Final Fill: Complete the alphabet by writing all remaining unused letters in reverse alphabetical order.
Tabula Recta Placement
Alphabet 1: Lower Top Header
Alphabet 2: Left Side Header
Alphabet 3: Extreme Top Header
Alphabet 4: Right Side and Bottom Headers
Operation Settings
Mode Selection: You must specify whether you are Encrypting or Decrypting, as the lookup logic reverses between these modes.
Keystream Taps (numLetters): Define how many previous keystream letters are used to generate the next one. This must be a positive integer less than or equal to the length of your seed (Key 5).
Encrypt
Decrypt
Letters used to make keystream:
Step 2. Plaintext preparation
Plaintext / Ciphertext
Do cut
Preserve spaces
Text Processing & Hardening
Before the main encryption or decryption occurs, the text can be processed to obscure its structure and linguistic patterns.
Encryption: Optional Hardening
The "Cut" Technique: The message is split at a random location, the two parts are swapped, and the marker "POLYCRYPT" is inserted at the seam to allow for reconstruction later.
Standard Cleanup: All text is converted to uppercase and diacritics/accents are removed.
Pattern Obscuration (Optional):
Existing Qs are replaced with Ks.
Spaces and selected punctuation are replaced with Q to create a continuous block of text.
Decryption: Preliminary Steps
Transposition Reversal: If Key 6 was used to shuffle the ciphertext, this must be reversed first to restore the correct character order.
Structure Recovery: After the main decryption, the "Cut" and space-substitutions are reversed to restore the readable plaintext.
Processed Plaintext / Ciphertext
Step 3. Encryption / Decryption
In order to obtain the ciphertext we generate the table below, following the instructions at the top of this page. The top row is the input, the middle row the keystream, the bottom row the output.
Work table
Information about output randomness will appear here
If Key 6 is provided, a final layer of security is applied through a columnar transposition, followed by specific recovery steps during decryption.
Key 6: Columnar Transposition
Generate Permutation: Write Key 6 and assign a numerical order to its letters based on the alphabet (e.g., A=1, B=2). If letters are repeated, assign numbers from right to left.
The Grid: Write the ciphertext in rows of the same length as Key 6.
Readout:
Alphabetical Key: Read the letters out column-by-column in the order of the numbers assigned ($1, 2, 3 \dots$).
Numeric Key: If Key 6 is a number, simply write the text in rows of that length and read out columns from left to right.
Formatting: The final output is split into five-letter codegroups for standard transmission.
Decryption: Restoring the Plaintext
Undo the Cut: Locate the marker "POLYCRYPT" and swap the text segments on either side to restore the original order.
Recover Formatting: To restore readability, the following replacements are made:
QQ is replaced with a period and a space (". ").
Q is replaced with a single space.
KU followed by a vowel is replaced with QU.
Raw Ciphertext / Plaintext
Formatted Output
Bonus: error correction
Manual encryption is prone to human error. While some mistakes—such as errors in key compression or transposition—are difficult to recover from,
PolyCrypt includes tools to help identify and fix common keystream errors during decryption.
Types of Errors
Combination Errors: If a mistake is made while combining the plaintext and keystream, only a single character will be affected. The rest of the message remains readable.
Keystream Errors: If a mistake is made during the generation of the keystream itself, it causes a "cascade effect." Every character following the error will result in gibberish.
Using the Correction Tools
To fix a cascading keystream error during decryption, follow these steps:
Identify the Spot: In the Formatted Output box, click or select the first character that appears to be incorrect.
Cycle Values (Next): Click the Next button. This intentionally adds a value (1-26) to the keystream at that position. Continue clicking until the decrypted text immediately following that spot becomes readable.
Commit Progress (Save): Once the text is fixed, click Save to lock in that correction. If more gibberish appears further down, repeat the process from Step 1.
Undo (Back): If you cannot fix the text after trying all 26 values, the error likely occurred earlier in the message. Click Back to remove the last saved correction and try again from a different starting point.
The Error Display Box at the bottom tracks the specific adjustments being applied to your session.