Premessa
Durante la creazione della matrice, potremo scegliere quanti minicodici assegnare a ciascun carattere codificabile.
📌 Esempio pratico
Se scegliamo di generare una matrice con 10 minicodici, ogni carattere riceverà 10 minicodici univoci e casuali.
Durante la codifica del testo, il software assegnerà uno di questi minicodici a ogni occorrenza del carattere corrispondente.
⚠️ Ma attenzione: un singolo minicodice può essere usato solo una volta.
🚫 Cosa succede se i minicodici non bastano?
Se nel testo da codificare un carattere appare più volte rispetto al numero di minicodici disponibili, la codifica fallirà.
✅ Esempio:
Abbiamo creato una matrice con 10 minicodici.
Vogliamo codificare un testo che contiene 11 lettere “c”
❌ La codifica non potrà essere completata, perché all’undicesima “c” non potrà essere assegnato un minicodice.
Il file matrix.json
Per poter codificare un testo, per prima cosa dovremo assicurarci che nella cartella di lavoro sia presente il file matrix.json della matrice che desideriamo utilizzare.
Questo file è indispensabile per la creazione del codice.
Creazione del codice
Nella sezione Codifica un testo clicchiamo su Codifica.
Nella finestra che si aprirà, inseririamo il testo da codificare. Il testo può essere:
- Digitato manualmente.
- Incollato tramite copia-incolla.
Una volta inserito il testo, clicchiamo su Conferma.
Il sistema genererà automaticamente il codice, che verrà salvato in locale nel sistema e visualizzabile nella cartella di lavoro con il nome code.txt
Come funziona la codifica
Con Cyphersol, ad ogni lettera maiuscola, minuscola, accentata, carattere speciale, numero, simbolo, spazio e ritorno a capo potranno essere assegnati diversi minicodici casuali e univoci.
Se si crea una matrice mantenendo l'impostazione predefinita (100 colonne) potranno essere assegnati un massimo di 100 minicodici casuali e univoci ad ogni carattere.
Tuttavia nella generazione della matrice si può arrivare a scegliere di creare fino ad un massimo di 16382 colonne.
Il minicodice assegnato al singolo carattere, sarà il risultato di un concatenamento.
Ciò che verrà concatenato sarà il contenuto di una qualsiasi cella della zona B con i numeri della cella (tassativamente della stessa colonna) corrispondenti alla riga del carattere da codificare.
Esempio di codifica basata sull'utilizzo della seguente matrice:
Per questo esempio utilizzeremo la porzione di matrice di questa immagine, in cui possiamo visualizzare in maniera completa, essendo appunto un'immagine, solo i caratteri maiuscoli.
Supponiamo di voler codificare la lettera H.
Dovremo prendere il contenuto di una cella della Zona A e per questo esempio prendiamo la cella della colonna E.
Il contenuto di questa cella è Dzby.
Fatto questo, dovremo prendere, sempre dalla stessa colonna, il numero corrispondente alla riga del carattere da codificare, la H, che è 41.
Il minicodice di questo carattere sarà Dzby41 (vedi immagine seguente).
Supponiamo ora di voler codificare la parola HELLO.
Dovremo codificare 5 lettere maiuscole.
Vediamo alcuni esempi di risultati possibili:
Snd206N170Ua150Tg24Qp109
Tg90Nqj124Usr114Esqs106Ua172
Qjhb149Qjhb145K88Tg24J27
V35N170S154Ua150Ua172
Per un controllo approfondito in fondo a questa pagina troverai i link per scaricare la matrice sia in versione xlsx che json.
Per la app ti servirà solamente il file di tipo json.
Una volta in possesso della matrice crea un file di testo e rinominalo code.txt, inserisci i codici dell'esempio, importa il file code.txt nella cartella di lavoro e poi decodificali con la app
Tutti questi codici sono il risultato della stessa parola HELLO.
In questo caso stiamo codificando una singola parola ma, come vedremo, alla funzione di concatenamento dei singoli minicodici non interessa se stiamo parlando di singole parole semplici o di frasi complesse, piene magari di caratteri speciali, punteggiature, spazi e ritorni a capo.
Ognuno di essi verrà codificato e concatenato allo stesso modo.
Per ora comunque analizziamo il risultato del primo dei 4 risultati della codifica della parola HELLO:
Snd206N170Ua150Tg24Qp109
Ecco il risultato dettagliato della codifica dei singoli caratteri:
Carattere | Concatenamento | Minicodice |
---|---|---|
H = | Snd + 206 = | Snd206 |
E = | N + 170 = | N170 |
L = | Ua + 150 = | Ua150 |
L = | Tg + 24 = | Tg24 |
O = | Qp + 109 = | Qp109 |
Questa procedura di decodifica può essere facilmente eseguita anche manualmente (anche se richiederà molto più tempo).
Ogni carattere codificato all'interno di una parola o di una frase, infatti, inizierà con una lettera maiuscola e finirà con l'ultimo numero prima di una nuova lettera maiuscola.
Nell'esempio appena esaminato, potremo renderci conto di questo visualizzando i minicodici concatenati, differenziati dai diversi colori:
Snd206N170Ua150Tg24Qp109
La codifica e decodifica manuale potrebbe far sorgere, nei più attenti di voi, un dubbio.
Va bene per i caratteri ma come la mettiamo con la codifica manuale degli spazi e dei ritorni a capo?
Non entro nei dettagli tecnici che mi hanno permesso di riuscire ad ottenere anche la codifica e decodifica degli spazi e dei ritorni a capo a livello di software, (per questo si potrà analizzare il codice), fatto sta che la soluzione a livello di software è anche la soluzione per l'identificazione manuale.
Sostanzialmente la soluzione è stata quella di assegnare allo spazio e al ritorno a capo un simbolo.
Più precisamente un ideogramma.
per lo spazio si dovrà fare riferimento al simbolo 愛 (la riga 2 della matrice)
per il ritorno a capo si dovrà fare riferimento al simbolo 穴 (la riga 3 della matrice).
A questo proposito analizziamo un testo in cui è presente uno spazio.
Codifichiamo la frase HELLO WORLD.
Ecco uno dei possibili risultati:
Dzby41Esqs94Zuu74Rw179Efd32Y57Qjhb45Wu131Np18Rgdf139
Poniamo in primo luogo l'attenzione al minicodice Efd32.
Corrisponderà alla colonna F della matrice e al carattere 愛 che corrisponderà allo spazio presente tra la parola HELLO e WORLD.
L'unica informazione a cui si può risalire analizzando un minicodice di questo tipo, in cui ogni carattere, spazio o ritorno a capo è codificato in maniera univoca è, pertanto, il numero dei caratteri presenti nella frase ma non sarà possibile in nessun modo capire di quante parole è composta.
Ecco il risultato dettagliato della codifica dei singoli caratteri e dello spazio:
Carattere | Concatenamento | Minicodice |
---|---|---|
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 |
Lo spazio e il ritorno a capo
Come già detto in precedenza sia gli spazi che le operazioni di ritorno a capo verranno codificate esattamente come tutti gli altri caratteri.
Ciò che deve essere chiaro è che verranno codificati sempre.
Se tra una parola e l'altra inserisco un solo spazio questo verrà codificato una volta.
Se inserisco 10 spazi verranno codificati tutti con 10 minicodici univoci.
E lo stesso ragionamento vale per i ritorno a capo.
E in qualsiasi posizione del file essi vengano posizionati.
Scarica la matrice degli esempi di questo tutorial
Nella pagina seguente della guida capiremo come funziona la decodifica di un codice