Password Generator

Generujte silná náhodná hesla s přizpůsobitelnou délkou a znakovou sadou

Délka20
Počet5

Co je generátor hesel?

Generátor hesel vytváří náhodné řetězce znaků používané jako hesla pro uživatelské účty, API klíče, databázové přihlašovací údaje a šifrovací tajemství. Na rozdíl od hesel volených lidmi čerpají generovaná hesla z celého prostoru možných kombinací znaků, čímž jsou odolná vůči slovníkovým útokům a hádání na základě vzorů. Tento nástroj generuje silná náhodná hesla online pomocí kryptografického generátoru náhodných čísel zabudovaného ve vašem prohlížeči.

Síla hesla závisí na dvou faktorech: délce a rozmanitosti znaků. 20znakové heslo obsahující velká písmena, malá písmena, číslice a symboly má přibližně 131 bitů entropie. Na této úrovni by útok hrubou silou testující bilion pokusů za sekundu potřeboval déle, než je stáří vesmíru, aby vyzkoušel všechny kombinace. Výpočet je přímočarý: entropie = délka × log2(velikost znakové sady).

Standardy jako NIST SP 800-63B doporučují hesla o délce alespoň 8 znaků bez horního limitu vynuceného ověřovatelem a nedoporučují povinná pravidla složení, jako je požadavek právě jednoho symbolu, přičemž upřednostňují delší přístupové fráze. Pro strojové přihlašovací údaje a servisní účty je ve většině bezpečnostních rámců a předpisů o shodě přijímaným základem 20 nebo více náhodných znaků vybraných z plné znakové sady.

Proč používat generátor hesel?

Lidé jsou špatnými generátory náhodných čísel. Opakujeme hesla, volíme slovníková slova, nahrazujeme písmena předvídatelnými vzory (@ místo a, 3 místo e) a volíme výchozí krátké řetězce. Generátor hesel odstraňuje z tohoto procesu lidskou zaujatost.

🔐
Generování se soukromím na prvním místě
Hesla jsou generována výhradně ve vašem prohlížeči pomocí Web Crypto API. Žádné znaky neopouštějí vaše zařízení, nic není zaznamenáváno a při generování nejsou odesílány žádné síťové požadavky.
Okamžitý hromadný výstup
Generujte až 20 hesel najednou jediným kliknutím. Kopírujte jednotlivá hesla nebo všechna najednou pro zřizovací skripty nebo trezory přihlašovacích údajů.
🛡️
Bez nutnosti účtu
Žádná registrace, žádný e-mail, žádné sledovací soubory cookie vašich vygenerovaných hesel. Otevřete stránku, nastavte možnosti a generujte.
🎛️
Plná kontrola znakové sady
Přepínejte velká písmena, malá písmena, číslice a symboly nezávisle na sobě. Nastavte délku od 4 do 128 znaků podle požadavků jakéhokoli systému nebo bezpečnostní politiky.

Případy použití generátoru hesel

Vývoj frontendu
Generujte testovací hesla pro ověření formulářů, testování délky vstupů a vývoj autentizačních toků. Ověřte, že vaše přihlašovací formuláře správně zpracovávají 128znakové hesla a speciální znaky.
Backend a DevOps
Vytvářejte databázové přihlašovací údaje, API tokeny a hesla servisních účtů při nastavování infrastruktury. Využijte hromadné generování k zřízení více služeb v jedné relaci.
Bezpečnostní inženýrství
Generujte vysoce entropická tajemství pro šifrovací klíče, HMAC podepisování a rotaci JWT tajemství. Nastavte délku na 64 a více znaků pro tajemství, která musí přesáhnout 256 bitů entropie.
QA a penetrační testování
Testujte vynucování zásad hesel generováním řetězců, které zahrnují nebo vylučují konkrétní znakové sady. Ověřte, že systémy správně odmítají hesla pod minimální délkou nebo složitostí.
Datové inženýrství
Generujte náhodné přihlašovací údaje pro testovací prostředí, přípravné databáze a tajemství CI/CD pipeline. Vyhněte se opakovanému použití produkčních hesel v testovacích datech tím, že pro každé prostředí vygenerujete nová.
Zabezpečení osobních účtů
Vytvořte jedinečné heslo pro každý online účet. Spárujte tento generátor se správcem hesel pro ukládání přihlašovacích údajů, které nepotřebujete memorovat.

Referenční tabulka entropie hesel

Entropie měří, jak nepředvídatelné je heslo. Vypočítá se jako log2(velikost_znakové_sady ^ délka). Vyšší entropie znamená více možných kombinací, které musí útočník prohledat. NIST a OWASP doporučují alespoň 80 bitů entropie pro aplikace s vysokými bezpečnostními požadavky.

DélkaZnaková sadaEntropieČas pro útok hrubou silou
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

Časy prolomení předpokládají bilion pokusů za sekundu (offline útok s moderními GPU). Online útoky s omezením rychlosti jsou o mnoho řádů pomalejší.

CSPRNG vs Math.random() pro generování hesel

Zdroj náhodnosti je stejně důležitý jako délka hesla. Heslo vygenerované předvídatelným generátorem náhodných čísel může být rekonstruováno útočníkem, který zná algoritmus a počáteční stav. Tento nástroj používá crypto.getRandomValues(), což je kryptograficky bezpečný pseudonáhodný generátor čísel (CSPRNG) zabudovaný do každého moderního prohlížeče.

crypto.getRandomValues()
Používá zdroje entropie operačního systému (hardwarový RNG, časování přerušení atd.). Výstup je nepředvídatelný, i když útočník zná všechny předchozí výstupy. Vyžadováno specifikací W3C Web Crypto pro operace citlivé na bezpečnost.
Math.random()
Používá deterministický algoritmus osazený z omezeného zásobníku entropie. Výstup lze předpovědět, pokud je znám počáteční stav. Specifikace ECMAScript výslovně uvádí, že Math.random() neposkytuje kryptograficky bezpečná náhodná čísla. Nikdy ho nepoužívejte pro generování hesel.

Příklady kódu

Generujte hesla programově v různých jazycích. Každý příklad níže používá kryptograficky bezpečný zdroj náhodnosti, nikoli Math.random() nebo ekvivalentní slabé PRNG.

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"
}

Časté dotazy

Jak dlouhé by mělo být heslo?
Pro uživatelské účty poskytuje 16 znaků ze smíšené znakové sady více než 100 bitů entropie, což je dostatečné pro všechny současné modely hrozeb. Pro strojová tajemství (API klíče, šifrovací klíče) použijte 32 a více znaků. NIST SP 800-63B stanovuje minimum 8 znaků, ale doporučuje, aby systémy umožňovaly mnohem delší hesla bez zkracování.
Je tento generátor hesel bezpečný?
Ano. Hesla jsou generována ve vašem prohlížeči pomocí Web Crypto API (crypto.getRandomValues). Žádná data nejsou odesílána na žádný server. Toto můžete ověřit otevřením záložky Network v nástrojích pro vývojáře prohlížeče a sledováním, že při kliknutí na Generovat nejsou odesílány žádné požadavky. Zdrojový kód je JavaScript na straně klienta, viditelný v nástrojích pro vývojáře vašeho prohlížeče.
Co je entropie hesla?
Entropie je míra náhodnosti vyjádřená v bitech. Heslo s N bity entropie má 2^N možných hodnot. Například 20znakové heslo vybrané z 95 tisknutelných ASCII znaků má log2(95^20) = 131,1 bitů entropie. Každý další bit zdvojnásobuje počet pokusů, které útočník potřebuje.
Mám do hesel zahrnovat symboly?
Zahrnutí symbolů zvyšuje znakovou sadu z 62 (písmena + číslice) na 95 (tisknutelné ASCII znaky), čímž se přidá přibližně 6,1 bitů entropie na znak. Některé systémy omezují povolené symboly. Pokud systém odmítá určité symboly, deaktivujte možnost symbolů a kompenzujte to delším heslem. 24znakové alfanumerické heslo má větší entropii než 16znakové heslo se symboly.
Proč nepoužívat Math.random() pro generování hesel?
Math.random() není kryptograficky bezpečná. Většina JavaScriptových enginů ji implementuje pomocí xorshift128+ nebo podobného rychlého PRNG, který je navržen pro simulace a hry, nikoli pro bezpečnost. Útočník, který pozoruje několik výstupů, může obnovit vnitřní stav a předpovědět všechny budoucí výstupy. Web Crypto API používá zdroje entropie operačního systému, které nejsou předvídatelné.
Mohu vygenerovaná hesla použít pro API klíče a tokeny?
Ano, ale zvažte požadavky na formát vašeho cílového systému. Některá API očekávají klíče kódované v Base64 nebo hexadecimální řetězce místo libovolných znaků. Pro generování surových tajemství použijte plnou znakovou sadu při 32 a více znacích. Pro klíče v Base64 generujte náhodné bajty a kódujte je samostatně, místo abyste Base64 považovali za znakovou sadu pro hesla.
Jak často bych měl rotovat hesla?
NIST SP 800-63B (2017, aktualizováno 2024) nedoporučuje povinnou periodickou rotaci uživatelských hesel, protože vede k slabším volbám hesel. Rotujte pouze v případě důkazů o kompromitaci. Pro strojová tajemství a servisní účty rotujte podle modelu rizik vaší organizace, obvykle každých 90 dní pro přihlašovací údaje s vysokými oprávněními.