Cryptographically Secure Randomness vs. Pseudo-Random Number Generators
Standard JavaScript Math.random() relies on pseudo-random number algorithms (such as xorshift128+) designed for speed rather than cryptographic unpredictability. Because PRNG internal state can be reconstructed from observed sequence outputs, passwords generated via Math.random() are fundamentally vulnerable to reverse-engineering and statistical prediction attacks.
This tool utilizes window.crypto.getRandomValues(), which interfaces directly with the host operating system's cryptographic random number generator (such as /dev/urandom on Linux and macOS or CryptGenRandom / BCryptGenRandom on Windows). This guarantees true cryptographically secure pseudo-randomness (CSPRNG) with maximum information entropy.
Information Entropy Calculation (Shannon Entropy)
Password strength is mathematically measured in bits of entropy using Shannon's entropy formula:
- L = Password length in characters
- R = Size of the available character pool (e.g. 90 unique characters when uppercase, lowercase, numbers, and symbols are enabled)
A 20-character password drawn from a pool of 90 characters delivers approximately 130 bits of entropy, requiring an astronomical 2130 brute-force attempts to exhaust the keyspace—far exceeding modern supercomputing capabilities.
Guaranteed Character Representation and Unbiased Shuffling
Many simplistic password generators pick random characters from a concatenated pool, which creates a probabilistic risk that a required character class (such as special symbols or digits) might be omitted in a specific password.
Our generator enforces strict representation: at least one character is selected directly from each active class, remaining positions are populated uniformly from the combined pool using rejection sampling to eliminate modulo bias, and the entire character array undergoes an unbiased cryptographic Fisher-Yates shuffle.
Zero-Retention & Zero-Backend Privacy Architecture
In accordance with strict zero-knowledge security standards:
- 100% Client-Side: All computations execute strictly within your local browser JavaScript engine. No passwords, seeds, or parameters are ever sent to an external server.
- Zero Persistence: Generated passwords exist solely in ephemeral memory and are never written to
localStorage,sessionStorage, cookies, or indexed databases. - Zero Auto-Copy: Passwords are never placed into your system clipboard without an explicit user click on the Copy action button, preventing clipboard snooping attacks.
Frequently Asked Questions
- As senhas geradas são transmitidas para algum servidor?
- Não. A geração ocorre inteiramente na memória do seu navegador através de window.crypto.getRandomValues, sem chamadas externas.
- Por que usar crypto.getRandomValues em vez de Math.random?
- Math.random não é criptograficamente seguro e seus resultados podem ser previstos. window.crypto.getRandomValues consome entropia do sistema operacional.
- As senhas geradas ficam salvas no navegador?
- Nunca. As senhas são mantidas apenas na memória volátil da interface e nunca são gravadas no localStorage ou sessionStorage.