TOTP-Zeitfenster: Restsekunden und Fensterindex
Zum Unix-Zeitpunkt 1700000000 mit einer Periode von 30 Sekunden befinden Sie sich in Fenster 56666666, und es bleiben 10 Sekunden, bis der Zähler weiterspringt. Geben Sie Periode und Zeitstempel ein, um scheinbar zu früh ablaufende Codes zu untersuchen, ganz ohne Geheimnis. Kostenlos in Ihrem Browser.
- Kostenlos
- Läuft in Ihrem Browser
- Ohne Anmeldung
- Ihre Daten bleiben auf Ihrem Gerät
Im Browser ausführen – kostenlos
Rechenbeispiel
- Periode
- 30
- Aktuelle Zeit
- 1.700.000.000
- Verbleibende Sekunden
- 10
- Fensterindex
- 56.666.666
Dieser TOTP-Zeitfensterrechner wandelt eine Periodenlänge und einen Unix-Zeitstempel in zwei praktische Werte um: den Index des aktiven Zeitfensters und die Anzahl der vollen Sekunden bis zum Beginn des nächsten Fensters. Er hilft bei Entwicklung, Tests und Fehlersuche in zeitbasierten Einmalpasswortsystemen, insbesondere wenn ein Code früher als erwartet abzulaufen scheint. Die Berechnung ist deterministisch, verwendet keinen geheimen Schlüssel, erzeugt kein Passwort und liest die Geräteuhr nicht aus. Dieselbe Eingabe liefert deshalb immer dasselbe Ergebnis.
Verstehen Sie die Bedeutung eines TOTP-Zeitfensters
Ein TOTP-System teilt die Unix-Zeit in aufeinanderfolgende Fenster gleicher Länge. Dreißig Sekunden sind eine übliche Periode, die Berechnung funktioniert jedoch mit jeder positiven ganzen Sekundenzahl. Der Fensterindex entsteht, indem der Unix-Zeitstempel durch die Periode geteilt und abgerundet wird.
Alle Zeitstempel mit demselben Quotienten gehören zum selben Fenster. Dadurch können ein Authentifikator und ein Server unabhängig voneinander denselben fortlaufenden Zähler auswählen. Dieser Rechner zeigt den Zähler direkt an, ohne ein gemeinsames Geheimnis anzufordern oder einen Authentifizierungscode zu erzeugen.
Außerdem gibt er an, wie viele volle Sekunden bis zum nächsten Zählerstand verbleiben. In der ersten exakten Sekunde eines Fensters bleibt die gesamte Periode übrig, in der letzten noch eine Sekunde. Diese Grenzwertkonvention ermöglicht sinnvolle Countdown-Anzeigen und verhindert eine Nullanzeige, solange das aktuelle Fenster noch aktiv ist.
Geben Sie den Zeitstempel ausdrücklich in Unix-Sekunden und nicht in Millisekunden ein.
Wählen Sie die Eingaben und deuten Sie das Ergebnis
Setzen Sie period auf die konfigurierte Dauer eines TOTP-Schritts als positive ganze Sekundenzahl. Der Index beginnt bei der Unix-Epoche mit null und ist bei heutigen Zeitstempeln üblicherweise eine große ganze Zahl. Er ist kein Code und darf nicht mit den Ziffern eines Authentifikators verglichen werden.
Vergleichen Sie stattdessen Fensterindizes, um die zeitliche Übereinstimmung zweier Komponenten zu prüfen, oder nutzen Sie den Restwert, um festzulegen, wann ein Test auf die nächste Grenze warten soll. Die Funktion berücksichtigt weder Uhrabweichungstoleranzen noch benachbarte Fenster, Schaltsekundenkorrekturen oder Netzverzögerungen. Diese Punkte gehören zur Richtlinie des Prüfsystems.
Das Ergebnis beschreibt ausschließlich das mathematisch aktive Fenster für den übergebenen Zeitstempel und die Periode. Dadurch bleiben automatisierte Tests vorhersehbar und Abweichungen leichter eingrenzbar.
Nutzen Sie den Rechner sicher in Tests und Betrieb
Verwenden Sie diese Funktion, wenn Sie Zeitangaben benötigen, ohne einen TOTP-Seed offenzulegen. Feste Zeitstempel ermöglichen in Integrationstests die Prüfung direkt vor, an und nach einer Grenze, ohne eine verborgene Systemuhr im Rechner nachbilden zu müssen. Beachten Sie, dass ein übereinstimmendes Fenster nicht die Gültigkeit eines übermittelten Einmalpassworts beweist.
Für die Prüfung sind weiterhin das gemeinsame Geheimnis, vereinbarte Hash- und Stellenparameter, ein Schutz vor Wiederholung sowie eine ausdrückliche Toleranzrichtlinie erforderlich. Protokollieren Sie keine Geheimnisse zusammen mit diesen Zeitdiagnosen; Periode, Zeitstempel, Index und Countdown reichen zur Untersuchung der meisten Synchronisationsprobleme aus.
Anwendungsfälle
Uhrabgleich des Authentifikators untersuchen
Vergleichen Sie die berechneten Indizes protokollierter Client- und Serverzeitstempel, um Uhr- oder Periodenabweichungen ohne Weitergabe eines TOTP-Seeds zu erkennen.
Countdown bis zum Fensterwechsel erstellen
Zeigen Sie die vollen Restsekunden an, bevor der aktive TOTP-Zähler weiterläuft und ein neu erzeugter Code zum nächsten Fenster gehört.
Exakte Fenstergrenzen testen
Verwenden Sie feste Unix-Zeitstempel unmittelbar vor und genau an einer Grenze, damit zeitbezogene Authentifizierungstests deterministisch und wiederholbar sind.
Häufige Fragen
Was kostet diese Funktion?
Die Browserversion kann dieselbe deterministische Berechnung lokal durchführen.
Erzeugt oder prüft sie einen TOTP-Code?
Nein. Sie berechnet ausschließlich Zeitmetadaten und nimmt weder ein gemeinsames Geheimnis noch ein Einmalpasswort entgegen.
Warum wird an einer exakten Grenze die volle Periode ausgegeben?
Das neue Fenster hat gerade begonnen. Daher ist noch keine seiner vollen Sekunden vergangen und die gesamte Periode verbleibt.
Gebe ich die Zeit in Sekunden oder Millisekunden ein?
In ganzen Unix-Sekunden, nie in Millisekunden. Ein Millisekundenwert würde auf ein Fenster weit in der Zukunft zeigen. Ein ausdrücklicher Zeitstempel erlaubt Ihnen außerdem, das Ergebnis in Tests, Protokollen oder Störungsberichten nachzuvollziehen.
Ist ein Code gültig, wenn zwei Systeme im selben Fenster liegen?
Nicht unbedingt. Ein gleiches Fenster zeigt nur, dass beide Seiten bei der Uhrzeit übereinstimmen. Zum Prüfen eines Codes braucht es weiterhin das gemeinsame Geheimnis, die vereinbarten Einstellungen, Schutz vor Wiederverwendung und eine klare Toleranz für Uhrabweichungen.
Verwandte Tools
Für Entwickler — API-Zugang
Alles auf dieser Seite ist auch per API verfügbar. Dieser Abschnitt richtet sich an Teams, die es in ihre eigenen Systeme einbinden möchten; alle anderen nutzen einfach das Tool oben.
Endpunkt
Authentifizierung per Bearer-Token. Ein einziger POST stellt die Aufgabe in die Warteschlange; das Ergebnis erhalten Sie per Webhook oder über einen signierten Link.
Aufruf aus Ihrem Stack
curl -X POST https://api.kit.forhosting.com/security/otp-time-window-calc \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"period":30,"current_time":1700000000}'const res = await fetch("https://api.kit.forhosting.com/security/otp-time-window-calc", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"period": 30,
"current_time": 1700000000
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/security/otp-time-window-calc",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"period": 30,
"current_time": 1700000000
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/security/otp-time-window-calc", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"period":30,"current_time":1700000000}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"period":30,"current_time":1700000000}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/security/otp-time-window-calc", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Beispiel-Anfrage
{
"period": 30,
"current_time": 1700000000
}Beispiel-Antwort
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "security.otp_time_window_calc",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}Die API arbeitet asynchron: Sie erhalten sofort eine task_id. Polling ist mit 1 Anfrage pro Sekunde erlaubt.
Preis
Der Preis steht auf der Seite – keine Tokens, keine Credits. Fehlgeschlagene Aufgaben werden nicht berechnet.
Fehler
| HTTP | Code | Bedeutung |
|---|---|---|
401 | unauthorized | Der API-Schlüssel fehlt oder ist ungültig – prüfen Sie den Authorization-Header (Bearer). |
402 | insufficient_balance | Ihr Guthaben reicht für diese Aufgabe nicht aus – Aufladungen verfallen nicht. |
404 | unknown_type | Unbekannter Aufgabentyp – prüfen Sie das Feld „type“ gegen den Katalog. |
429 | rate_limited | Zu viele Anfragen – warten Sie kurz; Polling ist mit 1 Anfrage pro Sekunde erlaubt. |
Technische Hinweise
Verstehen Sie die Bedeutung eines TOTP-Zeitfensters
So lässt sich das Ergebnis in Protokollen, Tests und Störungsberichten reproduzieren, ohne von der Uhr des Browsers oder des API-Prozesses abzuhängen.
Wählen Sie die Eingaben und deuten Sie das Ergebnis
Geben Sie anschließend current_time als nicht negativen Unix-Zeitstempel in vollen Sekunden an. Die Antwort enthält seconds_remaining und window_index. Sind beispielsweise in einem aktuellen Fenster mit dreißig Sekunden Periode bereits zehn Sekunden vergangen, beträgt seconds_remaining zwanzig.
Nutzen Sie den Rechner sicher in Tests und Betrieb
Eine Überwachungsaufgabe kann aus einem protokollierten Zeitstempel den aktuellen Index berechnen, während eine Oberfläche mit seconds_remaining vor einem bevorstehenden Codewechsel warnt. Jeder API-Aufruf kostet $0.002; die Browserversion kann lokal ausgeführt werden. Da der Algorithmus konstante Rechenarbeit leistet und weder Netzwerk, Zufallsquelle noch Uhr nutzt, liefern wiederholte Aufrufe mit identischen Eingaben dasselbe JSON und eignen sich für Referenztests und Prüfprotokolle.
Technische Fragen
Muss current_time in Sekunden oder Millisekunden angegeben werden?
Verwenden Sie volle Unix-Sekunden. Wandeln Sie einen Millisekunden-Zeitstempel vor dem Absenden in Sekunden um.
Was geschieht bei einer Periode von null oder bei einem negativen Wert?
Die Anfrage schlägt mit invalid_input fehl, weil ein TOTP-Zeitfenster eine positive Länge haben muss.