Come si usa
- Digita il tuo alfabeto, oppure scegli una preimpostazione e modificala. Ogni carattere può comparire una sola volta.
- Scegli il Metodo: Intero grande per alfabeti di qualsiasi lunghezza, oppure Gruppi di bit per alfabeti di 2, 4, 8, 16, 32 o 64 caratteri.
- Con Gruppi di bit puoi inserire, se vuoi, un Carattere di padding che non faccia parte dell’alfabeto.
- Codifica il tuo testo, oppure incolla una stringa scritta con il tuo alfabeto per decodificarla.
Due modi per trasformare byte in caratteri
Intero grande funziona come Base58. L’intero input viene letto come un unico intero grande e diviso ripetutamente per la lunghezza dell’alfabeto; ogni resto seleziona un carattere. Funziona con qualsiasi alfabeto di almeno 2 caratteri, per esempio 10, 36, 58 o 62. I byte zero iniziali vengono scritti come il primo carattere dell’alfabeto, così sopravvivono a un’andata e ritorno. Non c’è padding, e l’input è limitato a circa 20 KB perché i calcoli diventano lenti sui dati lunghi.
Gruppi di bit funziona come la RFC 4648. L’input viene diviso in blocchi di un numero fisso di bit: 1 bit per un alfabeto di 2 caratteri, 4 bit per 16, 5 bit per 32 e 6 bit per 64. Ogni blocco è un indice nell’alfabeto. È esattamente così che funzionano esadecimale, Base32 e Base64, e la lunghezza dell’output dipende solo dalla lunghezza dell’input.
Perché i due metodi danno risultati diversi
Un metodo codifica il valore numerico dei dati, l’altro i loro bit posizione per posizione. Di solito i risultati sono diversi, e una stringa va decodificata con lo stesso metodo che l’ha prodotta.
| Alfabeto | Input | Gruppi di bit | Intero grande |
|---|---|---|---|
| Base64 standard | Hi | SGk= | Ehp |
| Base32 RFC 4648 | Hi | JBUQ==== | SDJ |
01 | A | 01000001 | 1000001 |
0123456789 | Hi | non disponibile | 18537 |
Con i gruppi di bit e = come padding, gli alfabeti standard riproducono il normale Base64 e Base32. Il metodo intero grande elimina il bit zero iniziale di A perché scrive un valore, non un numero fisso di bit. Con le dieci cifre come alfabeto, mostra semplicemente i byte di Hi come numero decimale.
Il carattere di padding vale solo per i gruppi di bit. L’output viene completato fino a un multiplo di 4 caratteri per gli alfabeti di 64 caratteri e fino a un multiplo di 8 per quelli di 32 e di 8 caratteri. Con 2, 4 o 16 caratteri ogni byte riempie caratteri interi, quindi il padding non serve mai.
Regole per un alfabeto valido
- Almeno due caratteri.
- Nessun duplicato. Il decodificatore riporta ogni carattere a un solo valore. Se
aindicasse sia 0 sia 10, una stringa che lo contiene non si potrebbe decodificare. - Maiuscole e minuscole contano.
aeAsono caratteri diversi. - Il carattere di padding non deve far parte dell’alfabeto, altrimenti non si potrebbe distinguere dai dati.
Tutto avviene nel tuo browser, quindi alfabeto e dati restano sul tuo dispositivo.
Quando è utile un alfabeto personalizzato
- ID offuscati. Un alfabeto mescolato trasforma gli identificatori in token senza uno schema evidente. Questo nasconde ma non protegge: chiunque conosca l’alfabeto può decodificarli.
- Formati proprietari o legacy. Copia l’alfabeto di un sistema dalla sua documentazione e decodifica direttamente i suoi dati.
- Apprendimento. Confronta lunghezze di alfabeto diverse ed entrambi i metodi per capire come funziona la conversione di base. Per gli alfabeti fissi, vedi Base58 e Base62.
Domande frequenti
Qual è la differenza tra intero grande e gruppi di bit?
Intero grande converte l’intero input nella nuova base come un unico intero, come Base58, e funziona con alfabeti di qualsiasi lunghezza. Gruppi di bit divide l’input in blocchi di bit di dimensione fissa, come Base64, e richiede un alfabeto di 2, 4, 8, 16, 32 o 64 caratteri.
Perché il mio alfabeto Base64 personalizzato non produce lo stesso output del Base64 standard?
Il Base64 standard usa i gruppi di bit. Per ottenere lo stesso risultato, scegli il metodo Gruppi di bit e imposta = come carattere di padding. Il metodo Intero grande produce una stringa completamente diversa a partire dallo stesso alfabeto.
Perché i caratteri duplicati non sono ammessi?
Ogni carattere deve decodificarsi in un solo valore. Un carattere ripetuto avrebbe due significati, e i dati originali non si potrebbero recuperare in modo affidabile.
Posso usare un carattere di padding con il metodo intero grande?
No. L’output del metodo intero grande non ha una dimensione di blocco fissa, quindi non c’è nulla da completare. L’opzione di padding vale solo per i gruppi di bit.
Un alfabeto personalizzato è una forma di cifratura?
No. Resta una codifica senza chiave. Un alfabeto mescolato può rendere i dati più difficili da riconoscere a prima vista, ma non va mai usato per proteggere segreti.