FNV-1ハッシュ計算
ファウラー、ノル、ヴォーの元の方式で、各バイトを混ぜる前に掛け算してハッシュを求めます。foobarは32ビットで31f0b262になり、これはFNV-1aではなくFNV-1の参照値です。32ビットか64ビットを選べます。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- テキスト
- foobar
- 結果
- 31f0b262
- Fnv1
- 31f0b262
- Hex
- 31f0b262
- ビット
- 32
FNV-1はGlenn Fowler、Landon Curt Noll、Phong Voが設計した非暗号学的ハッシュです。メッセージをバイト列として処理し、各バイトごとに走行中のハッシュに固定のFNV素数を掛け、その積へバイトをxorします。この乗算してからxorする順序が、先にxorしてから乗算するFNV-1aとの違いです。両者は同じオフセット基底と素数を共有しますが、空でない文字列では異なるダイジェストになります。ハッシュマップ、ブルームフィルタ、フィーチャーフラグ、高速なコンテンツキーを作る開発者は、短い文字列に対する教科書どおりのFNV-1結果を32ビットまたは64ビット幅で、フィクスチャやプロトコルメモに貼れる小文字の十六進として必要とすることが多いです。本FNV-1ハッシュツールは空でないテキストを受け取り、UTF-8として符号化し、指定幅で決定的なループを実行し、hexダイジェストとアルゴリズム名、ビット幅、バイト数、短い要約を返します。
FNV-1が計算するものと幅・hex長が重要な理由
FNV-1は各メッセージを順序付きのオクテット列として扱います。ハッシュレジスタは公開されたオフセット基底で初期化されます。三十二ビットでは十六進の八一c九dc五、六十四ビットではcbf二九ce四八四二二二三二五です。
各入力バイトについて、アルゴリズムは現在のハッシュに対応するFNV素数を掛けます。三十二ビットでは〇一〇〇〇一九三、六十四ビットでは一〇〇〇〇〇〇〇一b三です。その後バイトを積へ排他的論理和し、選んだビット幅でラップします。
ストリームが終わると、符号なし結果を三十二ビットモードでは八桁、六十四ビットモードでは十六桁の小文字hexとして整形し、大文字小文字やエンディアン接頭辞、パディングをフィクスチャで争わずに済みます。有名な検査文字列はfoobarで、三十二ビットのFNV-1は三一f〇b二六二となり、元の乗算後xor順の独立参照表と一致します。
応答はbits、アルゴリズムラベルFNV-1-32またはFNV-1-64、UTF-8バイト数、元テキストも返すため、クライアントはメタデータを再導出せずに完全な監査行を表示できます。FNV-1は衝突耐性も鍵付きでもなく、パスワードや署名には不向きなため、高速なコンテンツ識別子やハッシュ表のシードとして扱い、真正性の証明とは考えないでください。
検索意図が暗号学的ハッシュである場合は、非暗号のFowler–Noll–VoハッシュではなくSHA系ダイジェストを優先してください。
FNV-1ハッシュが役立つ場面
言語ランタイム作者やシステム系の学生は、公開オフセット基底と素数に対して手計算の乗算後xor手順を検証するためにFNV-1ハッシュ計算機を使い、言語ごとにモジュラ乗算ループを書かずに済みます。
教育プラットフォームやLMSプラグインは、オフセット基底だけを返すのではなく空入力を拒否する決定的オラクルを必要とし、自動採点が欠落回答と本物のダイジェストを区別できるようにします。FNV-1ハッシュやFNV1計算機で順位を取るコンテンツサイトは、無料経路が同じ純粋モジュール上の有料自動化経路とバイト単位で一致するライブツールの恩恵を受けます。
検証失敗は拒否後に残高を消費しません。検索意図が元のFNV-1を離れるときだけFNV-1a、Adler-32、CRC、暗号ハッシュのランディングと組み合わせ、このページはFNV-1に絞ってSEO意図を鮮明に保ち、関連するチェックサムやダイジェストのランディングを共食いしないようにしてください。
活用例
ハッシュ表とブルームフィルタのシード
マップのバケット、ブルームフィルタ、言語横断のフィーチャーフラグシード向けに、短い文字列の安定したFNV-1-32またはFNV-1-64のhexキーを生成します。
教室でのFNV乗算後xorデモ
教員が古典的なfoobar検査値を示し、学生が暗号ライブラリを入れずに他の短い文字列を再計算できるようにします。
非暗号ハッシュヘルパー用CIフィクスチャ
パイプラインが決定的なFNV-1 hex出力と空入力エラーを固定し、素数・オフセット・順序の偶発的変更をすぐ失敗させます。
よくある質問
FNV-1とFNV-1aの違いは何ですか?
FNV-1は先にFNV素数で乗算し、その後バイトをxorします。FNV-1aは先にxorし、その後乗算します。本ツールはFNV-1のみを実装し、ダイジェストはFNV-1aの表と一致しません。
テキストが空の場合はどうなりますか?
空でない文字列が必須で、空入力はオフセット基底だけの成功ハッシュとしては扱われません。
FNV-1は暗号学的ハッシュですか?
いいえ。 FNV-1はハッシュ表やコンテンツキー向けの高速な非暗号学的ハッシュです。衝突耐性や認証が必要なときはSHA-256などを使ってください。
32ビットと64ビットのどちらのFNV-1を使えばよいですか?
相手のシステムが求める幅を使ってください。2つの結果は一致しません。32ビットが初期設定で、foobarなら31f0b262のように十六進8桁です。64ビットは開始値と素数が別で、十六桁になります。
自分で書いたFNV-1のコードが正しいかどうやって確かめますか?
foobarを32ビットでハッシュします。正しい値は参照表と同じ31f0b262です。もし別の値になるなら、混ぜる処理と掛け算の順番が入れ替わっている可能性があります。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/enc/fnv1 \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"foobar"}'const res = await fetch("https://api.kit.forhosting.com/enc/fnv1", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "foobar"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/enc/fnv1",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "foobar"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/enc/fnv1", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"foobar"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"foobar"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/enc/fnv1", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"text": "foobar"
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "enc.fnv1",
"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で拒否されるため、欠落フィールドとオフセット基底に等しい空メッセージ既知値とを混同しません。無料のブラウザ経路と前払いAPIは同一の純粋モジュールを共有し、教室のフィクスチャと本番パイプラインは同じ文字列・同じ幅で常に同じhex語に一致します。
入力契約、空文字列エラー、JSON応答の形
ハッシュしたい空でない任意の文字系列です。文字列はFNVループの前にUTF-8符号化されるため、複数バイト文字は同じUTF-8ストリームをハッシュする言語ランタイムと同じく、各コードユニットバイトを寄与します。古典的フィクスチャではtextがfoobar、既定bitsでhexは三一f〇b二六二、algorithmはFNV-1-32です。別フィクスチャでは同じ文字列にbits六十四で、FNV-1-64の十六桁hex語になります。空入力はオフセット基底だけを返すのではなく意図的に拒否され、プロダクトUXと自動採点が欠落回答と本物のハッシュを区別できます。素数・オフセット・乗算xor順の偶発的変更が気づかれずに出荷されないよう、継続的インテグレーションで成功経路と空入力エラーの両方を固定してください。必須の文字列フィールドtextを含むJSON本体をPOSTしてください。同一フィールドにはinput、value、s、data、message、payloadの別名も受け付け、SDKスタブやフォーム投稿の柔軟性を保ちます。任意フィールドbitsで幅を選びます。整数の三十二(既定)または六十四で、width、bit_width、sizeの別名も有効です。text欠落、非文字列、空文字列はいずれもinvalid_inputで失敗し、空でない文字列が必要である旨が示されます。これらの失敗は前払いAPIでは課金されません。三十二でも六十四でもない不正なbitsもinvalid_inputになります。成功時の本体には、同じ小文字十六進ダイジェストのresult・fnv1・hex、使用幅のbits、FNV-1-32またはFNV-1-64固定のalgorithm、UTF-8長のinput_bytes、入力を返すtext、バイト数とhex結果を要約するmessageが含まれます。任意のnullフィールドはnullとして出さず省略し、宣言的レンダラ契約に沿ったきれいなWebフォームに合わせます。
FNV-1ハッシュAPIが役立つ場面と料金の仕組み
単発確認にはブラウザ無料ツールを使い、残高のもとで安定した契約が必要なときはバックエンド、サーバレス関数、SDKから前払いKIT APIを$0.002の成功アイテム単位で呼び出してください。ペイロードはWorkerアイソレートのアイテム呼び出しに適した通常のテキストサイズに保ち、本ツールは短い文字列とプロトコル断片向けであり、数メガバイトのバイナリ塊向けではありません。
技術的な質問
テキストのFNV-1ハッシュはどう計算しますか?
空でない文字列フィールドtextと、任意で32(既定)または64のbitsをJSONで送ってください。APIは文字列をUTF-8符号化し、FNV-1(乗算後xor)を実行し、小文字hexをresult、fnv1、hexに返します。
FNV-1ハッシュ計算機は無料ですか?
ブラウザツールはお使いの端末で無料です。API呼び出しは成功アイテムあたり$0.002の前払いKIT残高を使い、検証失敗は課金されません。