Password Generator

Generera starka slumpmässiga lösenord med anpassningsbar längd och teckenuppsättningar

Längd20
Antal5

Vad är en Password Generator?

En lösenordsgenerator skapar slumpmässiga teckensträngar som används som lösenord för användarkonton, API-nycklar, databasuppgifter och krypteringshemligheter. Till skillnad från lösenord som väljs av människor hämtar genererade lösenord från hela rymden av möjliga teckenkombinationer, vilket gör dem motståndskraftiga mot ordboksattacker och mönsterbaserad gissning. Det här verktyget genererar starka slumpmässiga lösenord online med hjälp av webbläsarens inbyggda kryptografiska slumptalsgenerator.

Lösenordsstyrka beror på två faktorer: längd och teckenmångfald. Ett 20-tecken lösenord med versaler, gemener, siffror och symboler har ungefär 131 bitar entropi. På den nivån skulle en brute-force-attack som testar en biljon gissningar per sekund behöva längre tid än universums ålder för att prova varje kombination. Matematiken är enkel: entropi = längd × log2(teckenuppsättningens storlek).

Standarder som NIST SP 800-63B rekommenderar lösenord på minst 8 tecken utan övre gräns fastställd av verifieraren, och avråder från tvingande sammansättningsregler som att kräva exakt ett specialtecken — längre lösenfraser föredras istället. För maskin-till-maskin-uppgifter och tjänstekonton är 20 eller fler slumpmässiga tecken från en fullständig teckenuppsättning den accepterade grundnivån i de flesta säkerhetsramverk och efterlevnadsregimer.

Varför använda en Password Generator?

Människor är dåliga slumptalsgeneratorer. Vi återanvänder lösenord, väljer ord från ordböcker, ersätter bokstäver med förutsägbara mönster (@ för a, 3 för e) och väljer korta strängar som standard. En lösenordsgenerator tar bort mänsklig partiskhet från processen.

🔐
Integritetsfokuserad generering
Lösenord genereras helt i din webbläsare med Web Crypto API. Inga tecken lämnar din enhet, inget loggas och inga nätverksförfrågningar görs under genereringen.
Omedelbar batchgenerering
Generera upp till 20 lösenord på en gång med ett enda klick. Kopiera enskilda lösenord eller alla på en gång för provisioningsskript eller lösenordsvalv.
🛡️
Inget konto krävs
Ingen registrering, ingen e-post, inga kakor som spårar dina genererade lösenord. Öppna sidan, konfigurera dina alternativ och generera.
🎛️
Full kontroll över teckenuppsättning
Slå på och av versaler, gemener, siffror och symboler oberoende av varandra. Ange längd från 4 till 128 tecken för att uppfylla kraven i vilket system eller vilken policy som helst.

Användningsområden för Password Generator

Frontendutveckling
Generera testlösenord för formulärvalidering, testning av inmatningslängd och utveckling av autentiseringsflöden. Kontrollera att dina inloggningsformulär hanterar 128-tecken lösenord och specialtecken korrekt.
Backend och DevOps
Skapa databasuppgifter, API-token och tjänstekontoväsenord vid infrastrukturuppsättning. Använd batchgenerering för att provisionera flera tjänster i en enda session.
Säkerhetsutveckling
Generera hemligheter med hög entropi för krypteringsnycklar, HMAC-signering och JWT-nyckelrotation. Ange längd till 64+ tecken för hemligheter som behöver överstiga 256 bitar entropi.
QA och penetrationstestning
Testa lösenordspolicykontroll genom att generera strängar som inkluderar eller exkluderar specifika teckenuppsättningar. Kontrollera att system korrekt avvisar lösenord under minsta längd eller komplexitet.
Datautveckling
Generera slumpmässiga uppgifter för testmiljöer, stagingdatabaser och CI/CD-pipelinehemligheter. Undvik att återanvända produktionslösenord i testdata genom att generera nya per miljö.
Säkerhet för personliga konton
Skapa unika lösenord för varje onlinekonto. Kombinera den här generatorn med en lösenordshanterare för att lagra uppgifter du inte behöver memorera.

Referens för lösenordsentropi

Entropi mäter hur oförutsägbart ett lösenord är. Det beräknas som log2(teckenuppsättningens storlek ^ längd). Högre entropi innebär fler möjliga kombinationer för en angripare att söka igenom. NIST och OWASP rekommenderar minst 80 bitar entropi för säkerhetskritiska tillämpningar.

LängdTeckenuppsättningEntropiBrute-force-tid
8lower + digits~41 bitsMinutes to hours
12lower + upper + digits~71 bitsCenturies (offline)
16all character sets~105 bitsBeyond brute-force
20all character sets~131 bitsBeyond brute-force
32all character sets~210 bitsBeyond brute-force
64all character sets~419 bitsBeyond brute-force

Knäckningstider förutsätter 1 biljon gissningar per sekund (offlineattack med moderna GPU:er). Onlineattacker med hastighetsbegränsning är storleksordningar långsammare.

CSPRNG vs Math.random() för lösenordsgenerering

Källan till slumpmässighet spelar lika stor roll som lösenordets längd. Ett lösenord som genereras med en förutsägbar slumptalsgenerator kan rekonstrueras av en angripare som känner till algoritmen och seedtillståndet. Det här verktyget använder crypto.getRandomValues(), som är en kryptografiskt säker pseudoslumptalsgenerator (CSPRNG) inbyggd i varje modern webbläsare.

crypto.getRandomValues()
Använder operativsystemets entropikällor (hårdvaru-RNG, avbrottstiming osv.). Utdata är oförutsägbara även om en angripare känner till alla tidigare utdata. Krävs av W3C Web Crypto-specifikationen för säkerhetskänsliga operationer.
Math.random()
Använder en deterministisk algoritm seedat från en begränsad entropipool. Utdata kan förutsägas om seedtillståndet är känt. ECMAScript-specifikationen anger uttryckligen att Math.random() inte tillhandahåller kryptografiskt säkra slumptal. Använd det aldrig för lösenordsgenerering.

Kodexempel

Generera lösenord programmatiskt i olika språk. Varje exempel nedan använder en kryptografiskt säker slumpkälla, inte Math.random() eller likvärdiga svaga PRNG:er.

JavaScript (Web Crypto API)
// Generate a random password in the browser or Node.js 19+
function generatePassword(length = 20) {
  const charset = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*'
  const values = new Uint32Array(length)
  crypto.getRandomValues(values)
  return Array.from(values, v => charset[v % charset.length]).join('')
}

console.log(generatePassword())    // → "kR7!mZp$Xw2&nLq9@Yf3"
console.log(generatePassword(32))  // → "Hd4%tNx!Qw8#mKp2Rv6&Zj0*Ls3Yb7@"
Python
import secrets
import string

def generate_password(length: int = 20) -> str:
    """Generate a cryptographically secure random password."""
    alphabet = string.ascii_letters + string.digits + string.punctuation
    return ''.join(secrets.choice(alphabet) for _ in range(length))

# Single password
print(generate_password())      # → "kR7!mZp$Xw2&nLq9@Yf3"

# Batch of 5 passwords
for _ in range(5):
    print(generate_password(24))

# Ensure at least one char from each category
def generate_strong(length: int = 20) -> str:
    required = [
        secrets.choice(string.ascii_uppercase),
        secrets.choice(string.ascii_lowercase),
        secrets.choice(string.digits),
        secrets.choice(string.punctuation),
    ]
    remaining = length - len(required)
    alphabet = string.ascii_letters + string.digits + string.punctuation
    all_chars = required + [secrets.choice(alphabet) for _ in range(remaining)]
    secrets.SystemRandom().shuffle(all_chars)
    return ''.join(all_chars)
CLI (OpenSSL / /dev/urandom)
# OpenSSL — generate 32 random bytes, base64-encode
openssl rand -base64 32
# → "x7Kp2mNqR4wZ8vLs1Yb0Hd6tFj3Xc9Ga5eUi+Wo="

# /dev/urandom with tr — alphanumeric + symbols, 20 chars
tr -dc 'A-Za-z0-9!@#$%^&*' < /dev/urandom | head -c 20; echo
# → "kR7!mZp$Xw2&nLq9@Yf3"

# pwgen (install: apt install pwgen / brew install pwgen)
pwgen -sy 20 5
# Generates 5 passwords, 20 chars each, with symbols
Go
package main

import (
    "crypto/rand"
    "fmt"
    "math/big"
)

func generatePassword(length int) (string, error) {
    charset := "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*()"
    result := make([]byte, length)
    for i := range result {
        idx, err := rand.Int(rand.Reader, big.NewInt(int64(len(charset))))
        if err != nil {
            return "", err
        }
        result[i] = charset[idx.Int64()]
    }
    return string(result), nil
}

func main() {
    pwd, _ := generatePassword(20)
    fmt.Println(pwd) // → "kR7!mZp$Xw2&nLq9@Yf3"
}

Vanliga frågor

Hur långt bör ett lösenord vara?
För användarkonton ger 16 tecken från en blandad teckenuppsättning över 100 bitar entropi, vilket är tillräckligt för alla nuvarande hotmodeller. För maskinhemligheter (API-nycklar, krypteringsnycklar) använd 32 tecken eller fler. NIST SP 800-63B sätter ett minimum på 8 tecken men rekommenderar att system tillåter mycket längre lösenord utan avkortning.
Är den här lösenordsgeneratorn säker att använda?
Ja. Lösenord genereras i din webbläsare med Web Crypto API (crypto.getRandomValues). Ingen data skickas till någon server. Du kan verifiera detta genom att öppna webbläsarens nätverksflik och observera att inga förfrågningar görs när du klickar på Generera. Källkoden är JavaScript på klientsidan, synlig i webbläsarens utvecklarverktyg.
Vad är lösenordsentropi?
Entropi är ett mått på slumpmässighet uttryckt i bitar. Ett lösenord med N bitar entropi har 2^N möjliga värden. Till exempel har ett 20-tecken lösenord hämtat från 95 utskrivbara ASCII-tecken log2(95^20) = 131,1 bitar entropi. Varje ytterligare bit fördubblar antalet gissningar en angripare behöver.
Bör jag inkludera symboler i mina lösenord?
Att inkludera symboler ökar teckenuppsättningen från 62 (bokstäver + siffror) till 95 (utskrivbar ASCII), vilket lägger till ungefär 6,1 bitar entropi per tecken. Vissa system begränsar vilka symboler som är tillåtna. Om ett system avvisar vissa symboler, inaktivera symbolalternativet och kompensera med ett längre lösenord. Ett 24-tecken alfanumeriskt lösenord har mer entropi än ett 16-tecken lösenord med symboler.
Varför inte använda Math.random() för att generera lösenord?
Math.random() är inte kryptografiskt säker. De flesta JavaScript-motorer implementerar den med xorshift128+ eller en liknande snabb PRNG som är utformad för simulering och spel, inte säkerhet. En angripare som observerar några utdata kan återskapa det interna tillståndet och förutsäga alla framtida utdata. Web Crypto API använder operativsystemets entropikällor som inte är förutsägbara.
Kan jag använda genererade lösenord för API-nycklar och token?
Ja, men tänk på formatkraven hos ditt målsystem. Vissa API:er förväntar sig base64-kodade nycklar eller hex-strängar snarare än godtyckliga tecken. För rå hemlighetsgenerering, använd den fullständiga teckenuppsättningen vid 32+ tecken. För base64-nycklar, generera slumpmässiga byte och koda dem separat snarare än att behandla base64 som en lösenordsteckenuppsättning.
Hur ofta bör jag rotera lösenord?
NIST SP 800-63B (2017, uppdaterad 2024) avråder från tvingande periodisk rotation av användarlösenord eftersom det leder till sämre lösenordsval. Rotera endast när det finns bevis på intrång. För maskinhemligheter och tjänstekonton, rotera utifrån din organisations riskmodell — vanligtvis var 90:e dag för privilegierade uppgifter.