djb2-Hash-Rechner
Fügen Sie ein Wort ein und erhalten Sie den djb2-Fingerabdruck von Bernstein: hello ergibt 0f923099, als Zahl 261238937, genau wie der Code aus dem Lehrbuch. Er dient Hashtabellen, Cache-Schlüsseln und stabilen Gruppen, nie Passwörtern. 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
- Text
- hello
- Hash (Hex)
- 0f923099
- Hash (Ganzzahl)
- 261.238.937
- Hash (dezimal)
- 261238937
- Länge
- 5
djb2 ist der klassische nicht-kryptografische String-Hash von Daniel J. Bernstein: man startet bei fünftausenddreihunderteinundachtzig und multipliziert für jedes Zeichen den laufenden Hash mit dreiunddreißig und addiert den Zeichencode, wobei nur die niedrigen zweiunddreißig Bits behalten werden. Entwickler greifen weiterhin zu djb2, wenn sie einen schnellen, deterministischen Fingerabdruck für Hashtabellen, Cache-Schlüssel, Deduplizierungskarten und Lehrmaterial brauchen, das mit Lehrbüchern und bekannten Codebeispielen übereinstimmen soll. Diese Fähigkeit akzeptiert einen nicht leeren Textstring, führt genau diesen Algorithmus über UTF-16-Codeeinheiten aus und liefert den zweiunddreißig Bit großen Rest als acht hexadezimale Ziffern in Kleinbuchstaben plus die passende vorzeichenlose Ganzzahl.
Wie djb2 aus Text eine Zahl macht
djb2 stammt von Daniel J. Bernstein und gehört zu den am häufigsten kopierten Hashverfahren für Zeichenketten. Es beginnt bei der Zahl 5381. Für jedes Zeichen des Textes wird die laufende Summe mit 33 multipliziert und der Code des Zeichens addiert; nach jedem Schritt bleiben nur die letzten 32 Bit erhalten, sodass das Ergebnis immer in einem festen Bereich liegt. Der Faktor 33 wird oft als Verschiebung um fünf Bit plus Ausgangswert geschrieben, was dasselbe ergibt. Das Ergebnis sehen Sie zweifach: als acht kleine Hexadezimalziffern, links mit Nullen aufgefüllt, und als vorzeichenlose Zahl. Für hello sind das 0f923099 beziehungsweise 261238937.
Wann djb2 passt und wann nicht
djb2 ist schnell, braucht kein Geheimnis und liefert für denselben Text immer dieselbe Zahl. Das passt zu Hashtabellen, Cache-Schlüsseln, dem Aufspüren von Duplikaten, stabilen Nutzergruppen und Übungen, die mit dem Lehrbuch übereinstimmen sollen. Für Passwörter oder die Prüfung, ob eine Datei unverändert ist, taugt es nicht: Bei nur 32 Bit können verschiedene Texte denselben Wert haben, und wer Eingaben gezielt wählt, findet solche Kollisionen. Leerer Text wird abgewiesen, statt einen Scheinwert zu erhalten.
Was djb2 ist und wann ein 32-Bit-String-Hash genügt
Nicht-kryptografische Hashes tauschen Kollisionsresistenz gegen Geschwindigkeit und Einfachheit. djb2 ist einer der am häufigsten kopierten Kompromisse: der Startwert fünftausenddreihunderteinundachtzig und der Multiplikator dreiunddreißig (oft als Fünf-Bit-Linksverschiebung plus Originalwert geschrieben) erzeugen eine gut gestreute zweiunddreißig-Bit-Ganzzahl für gewöhnliche kurze Strings ohne Tabellen, Geheimnisse oder Plattformabhängigkeiten. Bernstein veröffentlichte die Idee in der Public-Domain-Ära von C-String-Utilities; sie erscheint noch in Sprach-Runtimes, Spiele-Engines und Blogposts, weil Lernende sie in wenigen Zeilen umsetzen und dennoch eine nützliche Verteilung für Hashmaps erhalten.
Es ist kein Passwort-Hash, kein Integritätsdigest und kein Ersatz für SHA-256 oder BLAKE, wenn ein Angreifer Eingaben wählen könnte.
Anwendungsfälle
Feature-Flags und Routing-Buckets
Projizieren Sie Benutzer- oder Mandantenstrings in einen zweiunddreißig-Bit-Raum für konsistente A/B-Buckets ohne kryptografischen Overhead oder Geheimnismaterial.
Häufige Fragen
Wie berechne ich einen djb2-Hash?
Senden Sie einen nicht leeren String im Feld text.
Welchen Algorithmus und Seed verwendet dies?
Klassisches djb2 von Daniel J. Bernstein: Anfangshash 5381, dann für jedes Zeichen hash = hash * 33 + charCode, gekürzt auf einen vorzeichenlosen 32-Bit-Wert.
Eignet sich djb2 für Passwörter oder Integrität?
Nein. djb2 ist ein schneller nicht-kryptografischer Fingerabdruck für Hashtabellen und Lehre. Nutzen Sie einen modernen kryptografischen Hash für Passwörter, Signaturen und Inhaltsintegrität.
Warum weicht mein djb2-Ergebnis von einem anderen Werkzeug ab?
Meist lässt das andere Werkzeug einen Schritt des klassischen Rezepts aus. Dieses beginnt bei 5381, multipliziert mit 33, addiert den Code jedes Zeichens und behält nach jedem Schritt nur die unteren 32 Bit ohne Vorzeichen, so wie der Referenzcode 0f923099 für hello erhält.
Wofür wird ein djb2-Hash verwendet?
Er gibt jedem Text eine schnelle, wiederholbare Zahl. Damit verteilen Sie Schlüssel in Hashtabellen, bilden Cache-Schlüssel, finden Duplikate und teilen Nutzer in stabile Testgruppen ein, wenn Tempo wichtiger ist als Schutz vor Angriffen.
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/enc/djb2 \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"hello"}'const res = await fetch("https://api.kit.forhosting.com/enc/djb2", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "hello"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/enc/djb2",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "hello"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/enc/djb2", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"hello"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"hello"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/enc/djb2", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Beispiel-Anfrage
{
"text": "hello"
}Beispiel-Antwort
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "enc.djb2",
"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
Leere Eingabe wird mit invalid_input abgelehnt, damit Aufrufer eine Payload der Länge null nie mit einem echten Hash verwechseln.
Eingabevertrag, Ablehnung leerer Eingabe und Antwortfelder
Zahlen und Booleans werden akzeptiert, indem sie vor dem Hashen in Stringform umgewandelt werden, was einfache Rechner-Widgets ergonomisch hält. Fehlgeschlagene Validierung wird nicht berechnet. Der Algorithmus ist linear in der Stringlänge und vollständig im Speicher; halten Sie Browser-Demos bei alltäglichen Strings und pinnen Sie bekannte Vektoren wie hello gleich 0f923099 in der Continuous Integration, damit ein einzeiliges Refactoring den Vertrag nicht still ändert. Senden Sie per POST einen JSON-Körper mit dem Pflicht-Stringfeld text. Der Wert muss ein nicht leerer String sein; fehlendes text, null oder ein leerer String schlägt mit invalid_input fehl und einer Meldung, die leere oder fehlende Eingabe meldet, damit Formularoberflächen das Feld ohne Raten markieren können. Bei Erfolg enthält der Körper hash_hex als acht hexadezimale Kleinbuchstaben-Ziffern links mit Nullen aufgefüllt, hash_int als vorzeichenlose Ganzzahl von null bis vier Milliarden zweihundertvierundneunzig Millionen neunhundertsiebenundsechzigtausend zweihundertfünfundneunzig, hash_dec als dieselbe Ganzzahl im Dezimaltext, length als Zeichenzahl des gehashten Strings, algorithm fest auf djb2 und seed fest auf fünftausenddreihunderteinundachtzig, der den klassischen Startwert dokumentiert. Alias-Schlüssel data, payload, value, input und string werden für die Payload akzeptiert, damit SDK-Clients bestehende Feldnamen wiederverwenden.
Wo eine djb2-Hash-API ihren Nutzen bringt
Lehrkräfte und Interview-Coaches nutzen dieselbe deterministische Ausgabe, um Schülerimplementierungen des Multipliziere-mit-dreiunddreißig-Hashings zu bewerten, ohne eine Compiler-Farm aufzubauen. Content-Sites, die für djb2-Hash-Rechner ranken, gewinnen ein Live-Tool, dessen kostenloser Pfad Byte für Byte dem Automatisierungspfad entspricht. Backend-Teams automatisieren die API in Inbetriebnahme-Werkzeugen, die Cache-Shards, Feature-Flag-Buckets oder Log-Routing-Schlüssel zuweisen und goldene hash_hex-Werte pinnen, damit eine Plattformmigration den Verkehr nie versehentlich umordnet. Weil die Implementierung reines Parse-Tier A ist, kostet jeder erfolgreiche Aufruf den veröffentlichten Basispreis $0.002 ohne Modell-Token und ohne ausgehendes Netz. Halten Sie Anfragen deterministisch, lehnen Sie leere Payloads am Rand ab, und Sie erhalten lehrbuchtaugliche Reproduzierbarkeit, ohne djb2-Schnipsel in jeden Microservice einzubetten.
Integrationsbeispiele
Fingerabdrücke für Hashtabellen und Cache-Schlüssel
Hashen Sie kurze Kennungen mit djb2 und speichern Sie hash_hex oder hash_int als kompakten, sprachunabhängigen Fingerabdruck für Maps, Caches und Bucket-Zuweisung.
Lehre und goldene Testvektoren
Stellen Sie sicher, dass Schüler- oder Bibliothekscode hash_hex 0f923099 für hello und 7c9e6865 für test erzeugt, damit djb2-Ports über Runtimes hinweg ausgerichtet bleiben.
Technische Fragen
Was passiert bei leerem Text?
Leerer oder fehlender Text schlägt mit invalid_input und einer Meldung zu leerer Eingabe fehl. Diese Fehler werden nicht berechnet.
Was kostet das djb2-Hash-Werkzeug?
Das Browser-Werkzeug ist kostenlos. API-Anfragen nutzen das vorausbezahlte KIT-Guthaben zu $0.002 pro erfolgreichem Aufruf; ungültige Eingabe wird nicht berechnet.