Methodology
Metodologia degli strumenti di codice
Primitive conformi agli RFC, esecuzione solo nel browser, zero analisi sui payload.
By Buğra SözeriPublished
Il cluster Codeoffre dieci utility, tutte eseguite interamente nel browser e nessuna delle quali invia il proprio payload da qualche parte. Questa pagina documenta cosa fa effettivamente ogni strumento — gli RFC a cui si conformano, le primitive che usano e cosa deliberatamente non fanno.
Base64 (RFC 4648)
Alfabeto standard: A-Z a-z 0-9 + /, imbottito con = a multipli di 4. La variante URL-safe (base64url) sostituisce + con - e / con _, elimina il padding.
Implementazione: il nativo btoa / atob di JavaScript gestisce la codifica, ma supporta solo stringhe Latin-1 (ogni byte è un carattere). Per UTF-8 prima codifichiamo la stringa con TextEncoder, poi eseguiamobtoasull’array di byte risultante. Questo è l’unico modo per codificare in Base64 in modo sicuro testo Unicode arbitrario nel browser senza dipendenze.
Decoder JWT (solo ispezione, nessuna verifica)
I JWT (RFC 7519) sono tre segmenti codificati in base64url separati da punti: header.payload.signature. Il nostro decoder divide, decodifica in base64url header e payload, li analizza come JSON e visualizza il risultato. Non verifichiamo la firma.
La verifica della firma richiede la chiave di firma — tipicamente un segreto HMAC o una chiave pubblica RSA/ECDSA — che deve provenire dall’emittente. Uno strumento solo-browser non può verificare in modo significativo un JWT emesso da terze parti, quindi non fingiamo di farlo. Usa il decoder per l’ispezione; usa lo stack server-side della tua applicazione per la verifica effettiva.
Convertitore di maiuscole/minuscole
Traduce tra camelCase, snake_case, kebab-case, PascalCase, CONSTANT_CASE, Title Case, Sentence case e lower / UPPER. L’algoritmo divide l’input in “parole” usando una regex che abbina le transizioni di maiuscole, trattini, underscore e spazi, poi riassembla nella convenzione target.
Caso limite: numeri negli identificatori. La nostra convenzione è mantenere i confini numero-lettera come confini di parola (quindi parseInt32 si divide in parse, int, 32) ma nondividere i confini lettera-numero all’interno di sequenze dall’aspetto chiaramente di identificatori (quindi md5 rimane una singola parola, non md_5).
Generatore di hash
SHA-1, SHA-256, SHA-384, SHA-512 tramite la Web Crypto API (crypto.subtle.digest), che è un sottile wrapper sull’implementazione nativa del sistema operativo. Deliberatamente non offriamo MD5 — il browser non lo fornisce nativamente (perché è crittograficamente compromesso), e preferiamo non aggiungere uno shim da 2 KB per supportare una funzione di hash che nessuno dovrebbe usare per nulla di rilevante per la sicurezza.
L’output è in esadecimale minuscolo. Tutte le operazioni sono sincrone dal punto di vista dell’utente nonostante la Web Crypto API sia asincrona — la latenza su dispositivi moderni è inferiore al millisecondo per input sotto un megabyte.
Generatore UUID
Due varianti:
- v4 (casuale):
crypto.randomUUID()quando disponibile, con fallback a un generatore manuale basato sucrypto.getRandomValues. 122 bit di entropia. - v7 (timestamp + casuale): timestamp Unix ms a 48 bit + 74 bit casuali. Ordinabile per tempo di generazione, il che rende v7 la scelta preferita per le chiavi primarie del database.
Generatore di password
Usa crypto.getRandomValuescon campionamento per rifiuto contro il più grande multiplo della dimensione del charset che rientra in un uint32. Questo elimina il bias del modulo — l’approccio ingenuo random32 % charsetSize è distorto quando charsetSize non divide 2³² equamente, che è ogni charset realistico.
L’entropia viene calcolata come lunghezza × log₂(charset) bit e visualizzata in tempo reale. L’etichetta di forza mappa l’entropia in cinque bande (molto debole / debole / sufficiente / forte / molto forte) con soglie che corrispondono alle linee guida comuni sulla sicurezza (NIST SP 800-63B raccomanda ≥ 80 bit per uso ad alto rischio).
Dettagli dell’algoritmo: le primitive di entropia e casualità
Il generatore di password e UUID sono gli unici strumenti in questo cluster che dipendono dalla casualità crittograficamente forte; la loro correttezza si basa su due primitive del browser.
Selezione di caratteri non distorta (campionamento per rifiuto)
Dato un charset di dimensione K e un draw casuale a 32 bit senza segno r, il naiver % K è distorto verso indici più piccoli a meno cheK divida 2³². Calcoliamo threshold = 2³² − (2³² mod K), estraiamo e rifiutiamo qualsiasi r ≥ threshold. Numero atteso di draw per carattere: < 1,05 per qualsiasiK ≤ 2³²/16. L’output è distribuito uniformemente sul charset.
Contabilità dell’entropia
L’entropia della password è lunghezza × log₂(K) bit. Le nostre bande di forza seguono le linee guida di NIST SP 800-63B:
| Banda | Entropia (bit) | Stima forza bruta (10⁹ tentativi/sec) |
|---|---|---|
| Molto debole | < 40 | secondi a ore |
| Debole | 40-60 | ore a settimane |
| Sufficiente | 60-80 | mesi a anni |
| Forte | 80-100 | secoli |
| Molto forte | ≥ 100 | tempo geologico |
Layout UUID v7 (RFC 9562)
bits[0..47] = unix_ms (48 bit)
bits[48..51] = versione = 0111 (4 bit)
bits[52..61] = casuale o contatore sub-ms (10 bit)
bits[62..63] = variante = 10 (2 bit)
bits[64..127] = casuale (64 bit)
totale casuale: 74 bit — resistente alle collisioni in praticaFonti e riferimenti
Ogni strumento nel cluster mappa a una specifica primaria: Base64 a RFC 4648, JWT a RFC 7519, hash a FIPS PUB 180-4, UUID a RFC 9562, entropia password a NIST SP 800-63B. La Web Crypto API stessa è una raccomandazione W3C. Vedi il blocco Fonti qui sotto per gli URL canonici.
Presupposti e limitazioni
- Esecuzione solo nel browser.Gli strumenti assumono un browser moderno con Web Crypto. Ambienti vecchi o protetti (alcuni blocchi kiosk, Node server-side senza shim) torneranno a un’implementazione JS e perderanno la forza crittografica.
- Nessuna verifica della firma. La decodifica JWT ispeziona ma non verifica. Non usare questo strumento come parte di una pipeline di autenticazione.
- Nessun MD5. Crittograficamente compromesso per uso autenticato; intenzionalmente omesso anche per il checksum. Usa SHA-256 con un piccolo compromesso sulle prestazioni.
- Nessuno streaming per input grandi.Gli strumenti di hash e Base64 caricano l’intero input in memoria. Gli input >100 MB metteranno in pausa la scheda durante la codifica.
- Nessuna telemetria del payload.Non registriamo, memorizziamo o trasmettiamo nulla incollato in questi strumenti. Il compromesso: non possiamo anche debuggare perché un input specifico viene renderizzato male senza che l’utente lo riproduca.
- I timestamp UUID v7 sono precisi al millisecondo. Generare >1000 UUID nello stesso millisecondo si basa sulla casualità sub-ms a 10 bit per l’unicità dell’ordinamento.
- La forza della password è euristica.La difficoltà reale dell’attacco dipende dai pattern conosciuti dell’attaccante (dizionario, set di password trapelate), non solo dall’entropia.
Cosa non facciamo
- Cifrare o decifrare contenuti. La Web Crypto API lo supporta; non esponiamo un’interfaccia perché l’uso improprio delle API crittografiche è pericoloso.
- Verificare i JWT. Vedi sopra.
- Formattare strutturalmente — preserviamo la formattazione dell’utente dove possibile. Per la formattazione completa usa un formattatore dedicato.
- Registrare i payload. Nulla che l’utente incolla lascia mai il browser.
Frequently asked questions
- Quale standard Base64 implementa Convertitive?
- L'alfabeto standard definito nell'RFC 4648 §4 (caratteri A–Z, a–z, 0–9, +, / con padding =). La variante base64url dell'RFC 4648 §5 (+ → -, / → _, nessun padding) è supportata e selezionata automaticamente quando è attivata l'opzione URL-safe. Entrambe le varianti sono completamente specificate nell'RFC 4648 (IETF, 2006).
- Convertitive verifica le firme JWT?
- No. Il decoder JWT analizza e visualizza l'intestazione e il payload decodificando in Base64url i primi due segmenti separati da punti secondo RFC 7519 §3. La verifica della firma richiede il segreto di firma o la chiave pubblica, che deliberatamente non chiediamo mai. Tutta l'elaborazione JWT viene eseguita localmente nel browser; il token non lascia mai il tuo dispositivo.
- Quali funzioni di hash usa il generatore di hash, e sono crittograficamente sicure?
- Il generatore usa SHA-1, SHA-256, SHA-384 e SHA-512 tramite la Web Crypto API (window.crypto.subtle), le cui implementazioni sono specificate in NIST FIPS 180-4. Tutti i calcoli avvengono nel browser. SHA-1 è deprecato per la resistenza alle collisioni (attacco SHAttered, Stevens et al., 2017) ma ancora usato in contesti legacy come gli identificatori di oggetti Git. Per integrità o autenticazione usa SHA-256 o superiore.
- Come garantisce la casualità il generatore UUID?
- Gli UUID sono versione 4 (casuali) come specificato nell'RFC 9562 §5.4. Ogni UUID viene generato usando window.crypto.getRandomValues(), un CSPRNG (generatore di numeri pseudocasuali crittograficamente sicuro) fornito dalla sorgente di entropia a livello di sistema operativo del browser. Questo è distinto da Math.random(), che non è crittograficamente sicuro. I 122 bit casuali danno una probabilità di collisione di ~5 × 10⁻³⁶ per coppia.
- Qualche strumento di codice invia i miei dati a un server?
- No. La codifica/decodifica Base64, il parsing JWT, l'hashing, la generazione UUID e tutte le altre utility di codice vengono eseguite interamente nel browser tramite la Web Crypto API e JavaScript standard. Nessun payload viene trasmesso a nessun server. Puoi verificarlo aprendo DevTools del browser → Rete e osservando zero richieste in uscita quando usi questi strumenti.
Related
- Strumenti di codice
- Encoder Base64
- Decoder JWT
- Generatore di password
- Generatore QR code
- Formattatore JSON
- Convertitore JSON ↔ YAML
- Tester Regex
- Diff di testo
- Markdown ↔ HTML
- Generatore Lorem ipsum
- Generatore di hash
- Encoder URL
- Generatore UUID
- Convertitore di maiuscole/minuscole
- Contatore di parole
- Come funziona davvero la tokenizzazione GPT
- Come scegliere una password sicura
- Base64 vs base64url
- SHA-256 vs MD5
- Glossario: Base64
- Glossario: JWT
- Glossario: SHA-256
- Glossario: Entropia
- Studio dati sulla durata dei certificati TLS
Published May 14, 2026