Vai al contenuto

Generatore di chiavi casuali

Random Key Generator

Genera byte casuali crittografici in esadecimale, Base64 o Base64URL della lunghezza che scegli, per i segreti di un’applicazione.

Una `SECRET_KEY` o una chiave di firma per un JWT devono essere byte casuali di una lunghezza dichiarata in una codifica dichiarata, e le improvvisazioni abituali — una tastiera pestata a caso, un UUID, l’hash del nome del progetto — hanno tutte meno entropia di quanto sembri. Questo strumento produce i byte e li codifica.

🔒 Funziona interamente nel tuo browserrandomkeysecretgenerator

Segreto casuale

bBLmZU2utGgo4nqqto46bmlxqDn9lcPsCflYh14thHI
Come JWK (oct)
{
  "kty": "oct",
  "k": "bBLmZU2utGgo4nqqto46bmlxqDn9lcPsCflYh14thHI",
  "ext": true
}

Chiave WebCrypto

Una CryptoKey vera, esportata come JWK: si usa così com’è con crypto.subtle.

Ogni byte viene da crypto.getRandomValues e resta in questa scheda. Niente viene generato su un server né inviato a un server.

Come si usa

  1. Scegliere la lunghezza in byte

    32 byte (256 bit) coprono quasi tutto: HMAC-SHA256, AES-256, chiavi di sessione. Per questi algoritmi più lunga non vuol dire più robusta: è l’algoritmo a definire la dimensione utile.

  2. Scegliere la codifica che vuole la configurazione

    L’esadecimale non è ambiguo ed è lungo il doppio. Il Base64URL evita `+`, `/` e `=`, che è quello che serve in un URL, in un’intestazione o in un file `.env` che qualcos’altro dovrà analizzare.

  3. Metterla nell’archivio dei segreti, non nel repository

    Una chiave finita una volta in un commit è una chiave da sostituire, per quanto in fretta il commit sia stato annullato. Se ne genera una diversa per ogni ambiente.

Domande frequenti

Da dove viene la casualità?

Da `crypto.getRandomValues`, il CSPRNG del browser, inizializzato dal sistema operativo. Non viene trasmesso nulla e non viene conservato nulla.

Una chiave generata in un browser vale quanto una da `openssl rand`?

La casualità è della stessa qualità: entrambe attingono dal sistema operativo. La differenza è dove la chiave viene mostrata: su uno schermo, forse in un browser che sincronizza, forse con un’estensione che osserva il DOM. Su una macchina che non si controlla, meglio la riga di comando.

Posso usarlo per un UUID?

Meglio usare il generatore di UUID: un UUIDv4 ha una disposizione fissa con sei bit spesi per versione e variante, quindi una stringa casuale grezza non ne è uno valido.

Può ricevere da

Dopo

Questi accettano ciò che produce questo strumento, così il risultato può passare direttamente.