Why Math.random() is Insecure: Understanding CSPRNG for Passwords
When generating random passwords, API keys, or security tokens, relying on standard random number generators like JavaScript's Math.random() is a severe security vulnerability.
The Flaw of Math.random()
Math.random() is a Pseudo-Random Number Generator (PRNG). It uses a deterministic formula starting from a "seed" value.
If an attacker can determine or guess the internal state or seed, they can predict all future outputs of the generator. This makes it unsafe for cryptographic security.
Password Generator
Generate strong, random, and cryptographically secure passwords online. Customize length, uppercase, lowercase, numbers, and symbols client-side.
Enter CSPRNG (Cryptographically Secure Pseudo-Random Number Generator)
A CSPRNG is designed to ensure that even if the attacker knows the previous random numbers generated, they cannot determine the seed or predict any future outputs.
In web browsers, you can access CSPRNG functions using the Crypto API:
const randomBuffer = new Uint32Array(1);
window.crypto.getRandomValues(randomBuffer);
const secureRandomNumber = randomBuffer[0] / (0xffffffff + 1);This draws raw entropy from system-level hardware sources (mouse movements, processor timers, hardware noise), providing secure randomness.