Code
// Browser + Node.js ≥ 19 (globalThis.crypto = Web Crypto API)
const randomToken = (bytes = 32) => {
// Unter 128 Bit Entropie ist ein Token leichter zu erraten
if (!Number.isInteger(bytes) || bytes < 16 || bytes > 65536) {
throw new RangeError('bytes muss eine ganze Zahl zwischen 16 und 65536 sein');
}
const buf = crypto.getRandomValues(new Uint8Array(bytes));
// Base64url: sicher für URLs und Cookies, ohne Padding
let bin = '';
for (const b of buf) bin += String.fromCharCode(b);
return btoa(bin)
.replace(/\+/g, '-')
.replace(/\//g, '_')
.replace(/=+$/, '');
};
console.log(randomToken()); // 256 Bit
console.log(randomToken(16)); // 128 Bit
Verwandte Snippets // Kategorie: Krypto & Passwörter
Häufige Fragen
Darf ich dieses Snippet kopieren und produktiv einsetzen?
Ja — alle Code-Beispiele auf programmierung.net dürfen frei kopiert und angepasst werden. Prüfe vor dem Produktiv-Einsatz immer Edge-Cases (leere Eingaben, Encoding, Fehlerbehandlung) und die Lizenzvorgaben eingebundener Bibliotheken.
Welche JavaScript-Version wird vorausgesetzt?
Snippets zielen auf aktuelle, stabile JavaScript-Versionen. Versionsabhängige Features werden im Code oder in der Beschreibung ausgewiesen.
Wo finde ich weitere JavaScript-Snippets?
In der Seitenleiste siehst du alle Snippets dieser Sprache. Oder gehe zur JavaScript-Übersicht.