Fowler-Noll-Vo FNV1a-64 ハッシュコード計算機
出版された: 2025年2月17日 21:46:42 UTC
Fowler-Noll-Vo 1a 64 ビット (FNV1a-64) ハッシュ関数を使用して、テキスト入力またはファイルのアップロードに基づいてハッシュ コードを計算するハッシュ コード計算機。Fowler-Noll-Vo FNV1a-64 Hash Code Calculator
FNV-1a 64 ビット ハッシュ関数は、ハッシュ値の適切な分散を維持しながら高速ハッシュを行うために設計された、Fowler–Noll–Vo (FNV) ハッシュ関数ファミリの一部です。ハッシュ テーブル、チェックサム、データ検索などのアプリケーションでよく使用されます。64 ビット (8 バイト) のハッシュ コードを生成します。これは、多くの場合、16 桁の 16 進数で表されます。
FNV-1a バリアントは、オリジナルの FNV-1 機能のセキュリティを強化した改良版です。
完全開示:このページで使われているハッシュ関数の特定の実装を書いたのは私ではない。これはPHPプログラミング言語に含まれる標準関数である。私は便宜上、ウェブ・インターフェースを作成し、ここで一般に利用できるようにしただけである。
Fowler-Noll-Vo FNV-1a 64 ビット ハッシュ アルゴリズムについて
私は数学者ではありませんが、このハッシュ関数を数学者ではない仲間にも理解できるような例えを使って説明してみます。科学的に正しい、恐ろしい数学的な説明がお好みなら、きっと他の場所で見つけられるでしょう ;-)
まず、FNV-1 アルゴリズムを特別なスムージーを作るレシピのように考えてみましょう。追加する各材料 (フルーツ、牛乳、蜂蜜など) は、文字、数字、またはファイル全体などのデータを表します。
ここでの目標は、これらの材料を非常に特殊な方法で混ぜて、レシピにほんの少し変更を加えただけでも (ブルーベリーを 1 つ追加するなど)、スムージーの味がまったく異なるようにすることです。ハッシュ関数はこのように機能します。ハッシュ関数は、材料 (または入力データ) の固有のセットごとに固有の「フレーバー」(またはハッシュ値) を作成します。
FNV-1 アルゴリズムがこれを実行する方法は、複数のステップから成るプロセスです。
ステップ 1: ベース (オフセット ベース) から開始する
これは、特別なスムージーベースをミキサーに注ぐようなものだと考えてください。このベースは、どんな材料を加えても常に同じです。FNV-1 では、これは「オフセット ベース」と呼ばれています。これは、単なる開始番号です。
ステップ2: 材料を一つずつ追加する(データの処理)
次に、材料を 1 つずつ追加します。たとえば、イチゴ、バナナ、蜂蜜などです。これらはそれぞれ 1 バイトのデータを表します。
ステップ 3: 秘密の乗数 (FNV プライム) とブレンドする
各材料を追加した後、ブレンド ボタンを押しますが、ここでひねりがあります。ブレンダーは、すべての材料に FNV プライムと呼ばれる秘密の「魔法の数字」を掛け合わせます。これにより、材料がうまく混ざります。
ステップ 4: 魔法のひとかけらを加える (XOR 演算)
次の材料を加える前に、魔法の粉を少し振りかけます (これは XOR 演算です)。これは、予期しない方法で風味を反転させるようなもので、小さな変化でも大きな違いを生むようになります。
ステップ5: 完了するまで繰り返す
すべての材料を処理できるようになるまで、新しい材料を加えるたびに、混ぜたり魔法をかけたりし続けます。
ステップ6: 最終スムージー(ハッシュ値)
終わったらスムージーを注ぎます。最終的な味(ハッシュ値)は、材料の組み合わせによって決まります。ブルーベリーを 1 個でも追加すると、味はまったく違ってきます。
ここで紹介するバージョンは、改良された FNV-1a 64 ビット バージョンです。オリジナル バージョンが必要な場合は、そのための計算機も用意しています:Fowler-Noll-Vo FNV1-64 ハッシュコード計算機