Encoding

Premise


During the matrix creation process, we can choose how many mini-codes to assign to each encodable character.

📌 Practical example
If we choose to generate a matrix with 10 mini-codes, each character will receive 10 unique and random mini-codes.
During text encoding, the software will assign one of these mini-codes to each occurrence of the corresponding character.
⚠️ But be careful: a single mini-code can only be used once.

🚫 What happens if the mini-codes are not enough?
If a character appears more times in the text than there are available mini-codes, encoding will fail.

Example:

We created a matrix with 10 mini-codes.
We want to encode a text that contains 11 letters “c”.
❌ The encoding will not be completed, because the eleventh “c” cannot be assigned a mini-code.

The matrix.json file


To encode a text, we must first ensure that the workspace folder contains the matrix.json file of the matrix we want to use.
This file is essential for code creation.

Code creation


In the Encode a text section, click on Encode.

In the window that opens, enter the text to be encoded. The text can be:

- Typed manually.
- Pasted via copy-paste.


Once the text is entered, click on Confirm.

The system will automatically generate the code, which will be saved locally on the system and can be viewed in the workspace folder under the name code.txt

How encoding works


With Cyphersol, each uppercase letter, lowercase letter, accented letter, special character, number, symbol, space, and line break can be assigned different unique random mini-codes.
If you create a matrix using the default setting (100 columns), a maximum of 100 unique random mini-codes can be assigned to each character.
However, when generating the matrix, you can choose to create up to a maximum of 16382 columns.

The mini-code assigned to a single character will be the result of a concatenation.
What is concatenated is the content of any cell in area B with the numbers from the cell (strictly from the same column) corresponding to the row of the character to be encoded.

Example of encoding based on the following matrix:

Immagine 1


For this example, we will use the matrix portion shown in this image, where we can fully visualize only the uppercase characters, as it is an image.
Let’s suppose we want to encode the letter H.
We need to take the content of a cell in Area A, and for this example, we’ll take the cell in column E.
The content of this cell is Dzby.
Next, we must take, from the same column, the number corresponding to the row of the character to encode, which for H is 41.
The mini-code for this character will be Dzby41 (see image below).

Immagine 1


Let’s now suppose we want to encode the word HELLO.
We need to encode 5 uppercase letters.
Let’s see some examples of possible results:


Snd206N170Ua150Tg24Qp109

Tg90Nqj124Usr114Esqs106Ua172

Qjhb149Qjhb145K88Tg24J27

V35N170S154Ua150Ua172




For a more detailed check, at the bottom of this page you will find links to download the matrix in both xlsx and json formats.
For the app, you will only need the json file.
Once you have the matrix, create a text file and rename it code.txt, enter the example codes, import the code.txt file into the workspace folder, and then decode them with the app.



All these codes are the result of the same word HELLO.
In this case we are encoding a single word, but as we will see, the concatenation function of individual mini-codes does not care whether we are dealing with single simple words or complex phrases full of special characters, punctuation, spaces, and line breaks.
Each one will be encoded and concatenated in the same way.
For now, let’s analyze the result of the first of the 4 encodings of the word HELLO:


Snd206N170Ua150Tg24Qp109


Here is the detailed result of the encoding of individual characters:

Character Concatenation Code
H = Snd + 206 = Snd206
E = N + 170 = N170
L = Ua + 150 = Ua150
L = Tg + 24 = Tg24
O = Qp + 109 = Qp109

This decoding procedure can also easily be performed manually (although it will take much more time).
Each encoded character within a word or phrase will begin with an uppercase letter and end with the last number before the next uppercase letter.
In the example just examined, we can observe this by viewing the concatenated mini-codes, distinguished by different colors:


Snd206N170Ua150Tg24Qp109


Manual encoding and decoding might raise a question for the more attentive among you.
It works fine for characters, but how do we handle the manual encoding of spaces and newlines?
I won’t go into the technical details that allowed me to achieve the encoding and decoding of spaces and newlines at the software level (you can analyze the code for that), but the solution at the software level is also the solution for manual identification.
Essentially, the solution was to assign a symbol to both the space and the newline.
More precisely, an ideogram.
for spaces, refer to the symbol (row 2 of the matrix)
for newlines, refer to the symbol (row 3 of the matrix).
Let’s now analyze a text where a space is present.
Let’s encode the sentence HELLO WORLD.

Here is one of the possible results:


Dzby41Esqs94Zuu74Rw179R109Efd32Y57Qjhb45Wu131Np18Rgdf139


Let’s focus first on the mini-code Efd32.
It corresponds to column F of the matrix and to the character , which represents the space between the words HELLO and WORLD.
The only information that can be inferred by analyzing such a mini-code, where each character, space, or line break is encoded uniquely, is the number of characters present in the phrase. However, there is no way to determine how many words it contains.


Here is the detailed result of the encoding of each character and the space:

Character Concatenation Code
H = Dzby + 41 = Dzby41
E = Esqs + 94 = Esqs94
L = Zuu + 74 = Zuu74
L = Rw + 179 = Rw179
O = R + 109 = R109
Spazio = Efd + 32 = Efd32
W = Y + 57 = Y57
O = Qjhb + 45 = Qjhb45
R = Wu + 131 = Wu131
L = Np + 18 = Np18
D = Rgdf + 139 = Rgdf139
Space and newline


As already mentioned, both spaces and line breaks will be encoded exactly like all other characters.
What’s important to understand is that they will always be encoded.
If I insert a single space between two words, it will be encoded once.
If I insert 10 spaces, they will all be encoded with 10 unique mini-codes.
And the same logic applies to line breaks, no matter where they appear in the file.

Download the example matrix for this tutorial





On the next page of the guide, we will understand how code decoding works.