djb2ハッシュ計算機
単語を貼り付けると、バーンスタインのdjb2ハッシュが分かります。helloは0f923099、整数では261238937で、教科書のコードと同じ結果です。ハッシュ表やキャッシュのキーに使えますが、パスワードには使えません。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- テキスト
- hello
- ハッシュ (16進)
- 0f923099
- ハッシュ (整数)
- 261,238,937
- ハッシュ (10進)
- 261238937
- 長さ
- 5
djb2 は Daniel J.Bernstein が考案した古典的な非暗号文字列ハッシュです。初期値は五千三百八十一で、各文字ごとに実行中のハッシュに三十三を掛け、文字コードを足し、下位三十二ビットだけを残します。ハッシュテーブル、キャッシュキー、重複排除マップ、教科書や有名なコード片と一致すべき教材向けに、高速で決定的な指紋が必要なとき、開発者は今も djb2 を選びます。この機能は空でないテキスト文字列を受け取り、UTF-16 コード単位上でそのアルゴリズムをそのまま実行し、三十二ビットの結果を八桁の小文字十六進と対応する符号なし整数で返します。
djb2 とは何か、32 ビット文字列ハッシュで足りる場面
非暗号ハッシュは衝突耐性と速度・単純さのトレードオフです。djb2 はその中でも最も写し取られてきた一つで、種五千三百八十一と乗数三十三(しばしば五ビット左シフトに元の値を足す形)により、表や秘密、プラットフォーム依存なしで通常の短い文字列に対しよく散らばった三十二ビット整数を得ます。
Bernstein は C の文字列ユーティリティがパブリックドメインだった時代にこの考えを公表し、数行で実装できハッシュマップに十分な分布が得られるため、言語ランタイムやゲームエンジン、記事にも今なお現れます。パスワード用ハッシュでも、コンテンツ完全性のダイジェストでも、攻撃者が入力を選べるときの SHA-256 や BLAKE の代替でもありません。
活用例
機能フラグとルーティングバケット
ユーザーやテナントの文字列を三十二ビット空間へ写像し、暗号オーバーヘッドや秘密なしで一貫した A/B バケットを作ります。
よくある質問
どのアルゴリズムと種を使いますか?
Daniel J. Bernstein の古典 djb2 です。初期ハッシュ 5381、各文字で hash = hash * 33 + charCode、符号なし 32 ビットに切り詰めます。
djb2 はパスワードや完全性検査に使えますか?
いいえ。 djb2 はハッシュテーブルや教育向けの高速な非暗号指紋です。パスワード・署名・コンテンツ完全性には現代の暗号ハッシュを使ってください。
ほかのツールとdjb2の結果が違うのはなぜですか?
多くの場合、相手のツールが古典的な手順の一部を省いています。このツールは5381から始め、33を掛けて各文字のコードを足し、毎回符号なしの下位32ビットだけを残すので、helloは参照コードと同じ0f923099になります。
djb2ハッシュは何に使いますか?
どんなテキストにも速く、毎回同じ数値を与えます。ハッシュ表へのキーの配置、キャッシュのキー作り、重複の検出、利用者を安定したテスト群に振り分ける用途など、攻撃への強さより速さが大事な場面に向いています。
違うテキストが同じdjb2ハッシュになることはありますか?
はい、あります。djb2は32ビットしか残さず、衝突しにくさより速さを優先した方式です。入力を意図的に選ぶ相手がいる場面では、暗号用のハッシュを使ってください。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
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)リクエスト例
{
"text": "hello"
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "enc.djb2",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
空入力は invalid_input で拒否されるため、長さゼロのペイロードを本物のハッシュと混同しません。
djb2 とは何か、32 ビット文字列ハッシュで足りる場面
このエンドポイントは古典的な符号なし三十二ビットラップを固定し、ASCII の hello はおなじみの残差 0f923099、文字列 test は 7c9e6865 となり、各乗算加算の後に符号なしキャストで切り詰める一般的な参照実装と一致します。
入力契約、空入力の拒否、応答フィールド
検証失敗は課金されません。アルゴリズムは文字列長に対して線形で完全にメモリ内です。ブラウザデモは人が扱う規模の文字列に抑え、hello が 0f923099 といった既知ベクトルを継続的インテグレーションで固定し、一行のリファクタが契約を静かに変えないようにしてください。必須の文字列フィールド text を含む JSON 本体を POST してください。値は空でない文字列でなければならず、text の欠落、null、空文字列は invalid_input と、空または欠落入力を明示するメッセージで失敗し、フォーム UI が推測なしにフィールドを強調できます。成功時の本体には、左ゼロ埋め八桁の小文字十六進の hash_hex、ゼロから四十二億九千四百九十六万七千二百九十五までの符号なし整数 hash_int、同じ整数の十進テキスト hash_dec、ハッシュした文字列の文字数 length、algorithm は djb2 固定、seed は古典的初期値を示す五千三百八十一固定が含まれます。ペイロードには data、payload、value、input、string の別名を受け付けるため、SDK 呼び出し側は既存のフィールド名を再利用できます。
djb2 ハッシュ API が役立つ場面
教育者や面接コーチは同じ決定的出力で、三十三倍ハッシュの学習者実装をコンパイラ農場なしに採点します。djb2 ハッシュ計算機で順位を狙うコンテンツサイトは、無料経路が自動化経路とバイト単位で一致するライブツールを得ます。実装は純粋 parse の tier A のため、成功した各呼び出しはモデルトークンも外向きネットワークもなく公開の基本料金 $0.002 です。数値マップキーが必要なら hash_int、ログやフィクスチャ向けの安定した印刷可能指紋だけなら hash_hex を使ってください。リクエストを決定的に保ち、空ペイロードを端で拒否すれば、各マイクロサービスに djb2 断片を埋め込まず教科書級の再現性が得られます。
連携の活用例
ハッシュテーブルとキャッシュキーの指紋
短い識別子を djb2 でハッシュし、マップ・キャッシュ・バケット割当向けのコンパクトで言語非依存な指紋として hash_hex または hash_int を保存します。
教育とゴールデンテストベクトル
学習者やライブラリのコードが hello で hash_hex 0f923099、test で 7c9e6865 を出すことを検証し、ランタイム間で djb2 の移植を揃え続けます。
技術的な質問
djb2 ハッシュはどう計算しますか?
text フィールドに空でない文字列を送ってください。API は hash_hex(小文字八桁 hex)、hash_int、hash_dec、length、algorithm djb2、seed 5381 を返します。
空のテキストを送るとどうなりますか?
空または欠落した text は invalid_input と空入力を伝えるメッセージで失敗します。これらの失敗は課金されません。
djb2 ハッシュツールの料金は?
ブラウザツールは無料です。API 要求は前払い KIT 残高で成功呼び出しあたり $0.002、無効入力は課金されません。