Generatore Base64 casuale

Crea stringhe Base64 casuali con il generatore di numeri casuali sicuro del tuo browser. Imposta la lunghezza in byte o in caratteri, generane fino a 1000 alla volta e scegli l’output standard o sicuro per URL.

Funziona interamente nel tuo browser. Non viene caricato nulla.

Come si usa

  1. Imposta la Lunghezza e scegli in Unità se si riferisce ai Byte di dati casuali o ai Caratteri Base64. Per una chiave usa i byte: 32 byte corrispondono a una chiave a 256 bit.
  2. Indica in Quantità quante stringhe ti servono e scegli il Separatore: Nuova riga, Virgola o Spazio.
  3. Scegli la Variante Standard o Sicura per URL. Con l’unità in byte puoi anche disattivare il Padding, se il sistema di destinazione non si aspetta i segni =.
  4. Fai clic su Genera per ottenere nuovi valori, poi su Copia tutto oppure su Scarica per salvare l’elenco.

Byte, caratteri ed entropia

La robustezza di una stringa casuale si misura in bit di entropia. Ogni byte casuale aggiunge 8 bit, quindi 16 byte danno 128 bit e 32 byte danno 256 bit. Base64 cambia solo il modo in cui quei byte vengono scritti: ogni carattere trasporta 6 bit e ogni 3 byte diventano 4 caratteri. Lo strumento mostra l’entropia di ogni stringa, così puoi controllarla a colpo d’occhio.

Con l’unità byte, l’output si decodifica esattamente in quel numero di byte casuali, che è ciò che serve per chiavi e segreti. Con l’unità caratteri ottieni un numero esatto di caratteri, ciascuno scelto in modo uniforme dall’alfabeto di 64 caratteri; usala quando un sistema richiede un token di lunghezza fissa e lo memorizza come testo.

ByteCaratteri Base64EntropiaUso tipico
121696 bitNonce (IV) per AES-GCM
1624 (22 senza padding)128 bitSalt, token di sessione e CSRF, chiavi AES-128
3244 (43 senza padding)256 bitChiavi AES-256 e HMAC-SHA256, segreti HS256, chiavi API
6488 (86 senza padding)512 bitChiavi HMAC-SHA512, segreti HS512

Dove si usano i valori Base64 casuali

  • Segreti JWT. La RFC 7518 richiede una chiave HMAC lunga almeno quanto l’output dell’hash: 32 byte per HS256, 48 per HS384 e 64 per HS512. Alcune librerie usano la stringa del segreto così com’è, altre la decodificano prima da Base64, quindi verifica cosa si aspetta la tua. Il decodificatore JWT verifica le firme da HS256 a HS512 con entrambi i tipi di segreto, e il generatore HMAC accetta una chiave in formato testo, esadecimale o Base64.
  • Chiavi applicative. Laravel, per esempio, conserva una chiave di cifratura di 32 byte nel file .env come APP_KEY=base64:..., nella stessa forma di una stringa di 32 byte generata con questo strumento.
  • Secret di Kubernetes. I valori sotto data devono essere Base64 standard con padding. Una stringa generata in modalità byte, con la variante Standard e il padding attivo, può andare lì direttamente, e il Pod riceve i byte casuali grezzi. Se l’applicazione si aspetta il testo Base64 in sé, inseriscilo invece sotto stringData.
  • Token negli URL. Link per reimpostare la password, codici di invito e altri token che viaggiano negli URL dovrebbero usare la variante sicura per URL, che sostituisce + e / con - e _. Per i dettagli vedi Base64URL.

Perché crypto.getRandomValues e non Math.random

Math.random() è un generatore veloce di uso generale. Il suo output non è progettato per essere imprevedibile e, con alcuni motori JavaScript, lo stato interno può essere ricostruito a partire da una manciata di valori. Questo strumento usa crypto.getRandomValues(), un generatore crittograficamente sicuro inizializzato dal sistema operativo, lo stesso tipo di sorgente su cui si basano openssl rand e il modulo secrets di Python. I valori vengono creati sul tuo dispositivo e non vengono mai inviati né memorizzati.

Generare Base64 casuali nel codice

# Shell: 32 byte casuali in Base64 (44 caratteri)
openssl rand -base64 32
head -c 32 /dev/urandom | base64

# Python
import base64, secrets
base64.b64encode(secrets.token_bytes(32)).decode()
secrets.token_urlsafe(32)        # sicuro per URL, senza padding, 43 caratteri

// Node.js
const crypto = require('crypto');
crypto.randomBytes(32).toString('base64');
crypto.randomBytes(32).toString('base64url');   // sicuro per URL, senza padding

// Browser
const bytes = crypto.getRandomValues(new Uint8Array(32));
btoa(String.fromCharCode(...bytes));

Domande frequenti

Quanto deve essere lunga una chiave o un segreto casuale?

16 byte (128 bit) bastano per i valori che devono solo essere univoci e impossibili da indovinare, come ID di sessione, token CSRF e salt. Usa 32 byte (256 bit) per chiavi AES-256, chiavi HMAC-SHA256 e segreti HS256, e 64 byte per HMAC-SHA512 e HS512.

È la stessa cosa di openssl rand -base64 32?
Produce lo stesso tipo di valore. Con una lunghezza di 32 byte, la variante Standard e il padding attivo, ogni risultato è lungo 44 caratteri, termina con un = e si decodifica in 32 byte casuali. Naturalmente i valori sono diversi ogni volta.
Devo usare l’unità byte o caratteri?

Usa i byte quando la stringa verrà decodificata, come per le chiavi di cifratura e i Secret di Kubernetes. Usa i caratteri quando un sistema richiede un token di lunghezza esatta e usa il testo così com’è. Una stringa generata con l’unità caratteri si decodifica correttamente con certezza solo se la sua lunghezza è un multiplo di 4.

Quando serve la variante sicura per URL?
Ogni volta che il valore finisce in un URL, in una query string, in un cookie o in un nome di file. Nel Base64 standard, / separa i segmenti dei percorsi URL e + diventa uno spazio nelle query string con codifica da modulo. Il Base64 sicuro per URL usa invece - e _ e di solito si scrive senza padding.
I valori generati vengono memorizzati o inviati da qualche parte?

No. Vengono generati da JavaScript nel tuo browser, non vengono mai trasmessi e spariscono quando lasci la pagina. Quando ne usi uno come segreto reale, conservalo in un password manager o in un archivio di segreti, non in messaggi di chat o ticket.