Start · Sprachen · JavaScript · Snippets · Kryptografisch sicherer Zufallstoken

Kryptografisch sicherer Zufallstoken

Krypto & Passwörter

Erzeugt einen kryptografisch sicheren, URL-tauglichen Zufallstoken (Base64url) für Session-IDs, Reset-Links oder API-Keys. Läuft im Browser und in Node.js ab Version 19.

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
q3V9x_Lk2Hc0sR-mT8bYpWn4ZfJ1aE6uDgKiOvN7cXw Zp4Kc_9sQm2LwX1-tRb8Ew

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.