Generator för slumpmässig Base64

Skapa slumpmässiga Base64-strängar med webbläsarens säkra slumptalsgenerator. Ange längden i byte eller tecken, generera upp till 1000 åt gången och välj standard- eller URL-säker utdata.

Körs helt i din webbläsare. Inget laddas upp.

Så använder du verktyget

  1. Ställ in Längd och välj under Enhet om längden avser Byte slumpdata eller Tecken i Base64. För en nyckel väljer du byte: 32 byte ger en nyckel på 256 bitar.
  2. Ange under Antal hur många strängar du behöver och välj Avgränsare mellan dem: Ny rad, Kommatecken eller Mellanslag.
  3. Välj varianten Standard eller URL-säker. Med enheten Byte slumpdata kan du också stänga av Utfyllnad om målsystemet inte förväntar sig =-tecken.
  4. Klicka på Generera för att få nya värden och sedan på Kopiera alla eller Ladda ned för att spara listan.

Byte, tecken och entropi

Styrkan hos en slumpmässig sträng mäts i bitar entropi. Varje slumpmässig byte bidrar med 8 bitar, så 16 byte ger 128 bitar och 32 byte ger 256 bitar. Base64 ändrar bara hur bytena skrivs: varje tecken bär 6 bitar, och varje grupp om 3 byte blir 4 tecken. Verktyget visar entropin för varje sträng, så att du kan kontrollera den med en blick.

Med enheten Byte slumpdata avkodas utdatan till exakt så många slumpmässiga byte, vilket är vad nycklar och hemligheter behöver. Med enheten Tecken får du ett exakt antal tecken, där varje tecken väljs likformigt ur alfabetet på 64 tecken; använd den när ett system kräver en token med fast längd och lagrar den som text.

ByteBase64-teckenEntropiTypisk användning
121696 bitarNonce (IV) för AES-GCM
1624 (22 utan utfyllnad)128 bitarSalter, sessions- och CSRF-tokens, AES-128-nycklar
3244 (43 utan utfyllnad)256 bitarAES-256- och HMAC-SHA256-nycklar, HS256-hemligheter, API-nycklar
6488 (86 utan utfyllnad)512 bitarHMAC-SHA512-nycklar, HS512-hemligheter

Här används slumpmässiga Base64-värden

  • JWT-hemligheter. RFC 7518 kräver att en HMAC-nyckel är minst lika lång som hashfunktionens utdata: 32 byte för HS256, 48 för HS384 och 64 för HS512. Vissa bibliotek använder hemlighetssträngen som den är, medan andra först Base64-avkodar den, så kontrollera vad ditt bibliotek förväntar sig. JWT-avkodaren verifierar signaturer från HS256 till HS512 med båda sorternas hemligheter, och HMAC-generatorn tar emot en nyckel som text, hex eller Base64.
  • Applikationsnycklar. Laravel sparar till exempel en krypteringsnyckel på 32 byte i sin .env-fil som APP_KEY=base64:..., i samma form som en sträng på 32 byte från det här verktyget.
  • Kubernetes Secrets. Värden under data måste vara standard-Base64 med utfyllnad. En sträng som har genererats med enheten Byte slumpdata, varianten Standard och Utfyllnad påslagen kan läggas in direkt, och podden får då de råa slumpmässiga bytena. Om applikationen förväntar sig själva Base64-texten lägger du den under stringData i stället.
  • Tokens i URL:er. Länkar för återställning av lösenord, inbjudningskoder och andra tokens som skickas i URL:er bör använda den URL-säkra varianten, som ersätter + och / med - och _. Läs mer under Base64URL.

Varför crypto.getRandomValues och inte Math.random

Math.random() är en snabb slumptalsgenerator för allmänt bruk. Dess utdata är inte utformad för att vara oförutsägbar, och i vissa JavaScript-motorer kan det interna tillståndet rekonstrueras utifrån en handfull värden. Det här verktyget använder crypto.getRandomValues(), en kryptografiskt säker generator som får sitt startvärde (seed) från operativsystemet, samma slags källa som ligger bakom openssl rand och modulen secrets i Python. Värdena skapas på din enhet och skickas eller sparas aldrig.

Generera slumpmässig Base64 i kod

# Skal: 32 slumpmässiga byte som Base64 (44 tecken)
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-säker, utan utfyllnad, 43 tecken

// Node.js
const crypto = require('crypto');
crypto.randomBytes(32).toString('base64');
crypto.randomBytes(32).toString('base64url');   // URL-säker, utan utfyllnad

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

Vanliga frågor

Hur lång bör en slumpmässig nyckel eller hemlighet vara?

16 byte (128 bitar) räcker för värden som bara behöver vara unika och omöjliga att gissa, till exempel sessions-ID:n, CSRF-tokens och salter. Använd 32 byte (256 bitar) för AES-256-nycklar, HMAC-SHA256-nycklar och HS256-hemligheter, och 64 byte för HMAC-SHA512 och HS512.

Är det här samma sak som openssl rand -base64 32?
Det ger samma slags värde. Med längden 32 byte, varianten Standard och Utfyllnad påslagen är varje resultat 44 tecken långt, slutar med ett = och avkodas till 32 slumpmässiga byte. Själva värdena blir förstås olika varje gång.
Ska jag välja Byte slumpdata eller Tecken som enhet?

Välj Byte slumpdata när strängen ska avkodas, som med krypteringsnycklar och Kubernetes Secrets. Välj Tecken när ett system behöver en token med exakt längd och använder texten som den är. En sträng som har skapats med enheten Tecken går bara garanterat att avkoda korrekt när längden är en multipel av 4.

När behöver jag den URL-säkra varianten?
Så fort värdet ska in i en URL, en frågesträng, en cookie eller ett filnamn. I standard-Base64 delar / upp sökvägar i URL:er, och + blir ett mellanslag i formulärkodade frågesträngar. URL-säker Base64 använder - och _ i stället och skrivs oftast utan utfyllnad.
Sparas eller skickas de genererade värdena någonstans?

Nej. De genereras av JavaScript i din webbläsare, överförs aldrig och försvinner när du lämnar sidan. När du väl använder ett värde som en riktig hemlighet bör du förvara det i en lösenordshanterare eller ett verktyg för hemlighetshantering, inte i chattmeddelanden eller ärenden.