Slik bruker du verktøyet
- Angi Lengde, og velg under Enhet om den skal telle Byte med tilfeldige data eller Tegn i Base64. For en nøkkel bruker du byte: 32 byte gir en nøkkel på 256 bit.
- Angi hvor mange strenger du trenger under Antall, og velg Skilletegn mellom dem: Linjeskift, Komma eller Mellomrom.
- Velg varianten Standard eller URL-sikker. Med enheten byte kan du også slå av Utfylling hvis målsystemet ikke forventer =-tegn.
- Klikk på Generer for å få nye verdier, og bruk deretter Kopier alle eller Last ned for å hente listen.
Byte, tegn og entropi
Styrken til en tilfeldig streng måles i bit entropi. Hver tilfeldige byte gir 8 bit, så 16 byte gir 128 bit og 32 byte gir 256 bit. Base64 endrer bare hvordan disse bytene skrives: hvert tegn bærer 6 bit, og hver gruppe på 3 byte blir 4 tegn. Verktøyet viser entropien til hver streng, så du kan kontrollere den med et raskt blikk.
Med enheten byte dekodes utdataene til nøyaktig så mange tilfeldige byte, og det er dette nøkler og hemmeligheter trenger. Med enheten tegn får du et eksakt antall tegn, der hvert tegn velges med lik sannsynlighet fra alfabetet på 64 tegn. Bruk den når et system ber om et token med fast lengde og lagrer det som tekst.
| Byte | Base64-tegn | Entropi | Typisk bruk |
|---|---|---|---|
| 12 | 16 | 96 bit | Nonce (IV) for AES-GCM |
| 16 | 24 (22 uten utfylling) | 128 bit | Salter, sesjons- og CSRF-tokener, AES-128-nøkler |
| 32 | 44 (43 uten utfylling) | 256 bit | AES-256- og HMAC-SHA256-nøkler, HS256-hemmeligheter, API-nøkler |
| 64 | 88 (86 uten utfylling) | 512 bit | HMAC-SHA512-nøkler, HS512-hemmeligheter |
Hvor tilfeldige Base64-verdier brukes
- JWT-hemmeligheter. RFC 7518 krever en HMAC-nøkkel som er minst like lang som hashutdataene: 32 byte for HS256, 48 for HS384 og 64 for HS512. Noen biblioteker bruker hemmeligheten som streng slik den er, mens andre Base64-dekoder den først, så sjekk hva biblioteket ditt forventer. JWT-dekoderen verifiserer HS256- til HS512-signaturer med begge typer hemmelighet, og HMAC-generatoren godtar en nøkkel som tekst, hex eller Base64.
- Applikasjonsnøkler. Laravel lagrer for eksempel en krypteringsnøkkel på 32 byte i
.env-filen somAPP_KEY=base64:..., i samme form som en streng på 32 byte fra dette verktøyet. - Kubernetes Secrets. Verdier under
datamå være standard Base64 med utfylling. En streng som er generert med enheten byte, varianten Standard og utfylling slått på, kan legges rett inn der, og poden mottar de rå tilfeldige bytene. Hvis applikasjonen forventer selve Base64-teksten, legger du den understringDatai stedet. - Tokener i URL-er. Lenker for tilbakestilling av passord, invitasjonskoder og andre tokener som sendes i URL-er, bør bruke den URL-sikre varianten, som erstatter
+og/med-og_. Se Base64URL for detaljer.
Hvorfor crypto.getRandomValues og ikke Math.random
Math.random() er en rask generator til generell bruk. Utdataene er ikke laget for å være uforutsigbare, og i enkelte JavaScript-motorer kan den interne tilstanden rekonstrueres fra en håndfull verdier. Dette verktøyet bruker crypto.getRandomValues(), en kryptografisk sikker generator som får startverdien sin fra operativsystemet, samme type kilde som ligger bak openssl rand og Pythons secrets-modul. Verdiene lages på enheten din og blir aldri sendt eller lagret.
Generer tilfeldig Base64 i kode
# Skall: 32 tilfeldige byte som Base64 (44 tegn)
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) # URL-sikker, uten utfylling, 43 tegn
// Node.js
const crypto = require('crypto');
crypto.randomBytes(32).toString('base64');
crypto.randomBytes(32).toString('base64url'); // URL-sikker, uten utfylling
// Nettleser
const bytes = crypto.getRandomValues(new Uint8Array(32));
btoa(String.fromCharCode(...bytes));
Ofte stilte spørsmål
Hvor lang bør en tilfeldig nøkkel eller hemmelighet være?
16 byte (128 bit) er nok for verdier som bare må være unike og umulige å gjette, som sesjons-ID-er, CSRF-tokener og salter. Bruk 32 byte (256 bit) for AES-256-nøkler, HMAC-SHA256-nøkler og HS256-hemmeligheter, og 64 byte for HMAC-SHA512 og HS512.
Er dette det samme som openssl rand -base64 32?
= og dekodes til 32 tilfeldige byte. Selve verdiene er selvsagt forskjellige hver gang.Bør jeg bruke enheten byte eller tegn?
Bruk byte når strengen skal dekodes, som med krypteringsnøkler og Kubernetes Secrets. Bruk tegn når et system trenger et token med nøyaktig lengde og bruker teksten slik den er. En streng fra enheten tegn kan bare garantert dekodes feilfritt når lengden er et multiplum av 4.
Når trenger jeg den URL-sikre varianten?
/ opp URL-stier, og + blir til et mellomrom i skjemakodede spørrestrenger. URL-sikker Base64 bruker - og _ i stedet og skrives vanligvis uten utfylling.Blir de genererte verdiene lagret eller sendt noe sted?
Nei. De genereres av JavaScript i nettleseren din, blir aldri overført og forsvinner når du forlater siden. Når du tar i bruk en av dem som en ekte hemmelighet, bør du oppbevare den i en passordbehandler eller et hemmelighetslager, ikke i chatmeldinger eller supportsaker.