Adler-32 は、マーク・アドラー(Mark Adler)が考案したチェックサムアルゴリズム。同じ長さの巡回冗長検査と比較すると、信頼性と引き換えに高速性を追求している。その元となった Fletcher-16 に比較すると信頼性が高いが、Fletcher-32 に比較すると若干信頼性が劣る[1]。 歴史[編集] Adler-32 はフレッチャーのチェックサムを修正したものである。 同じくマーク・アドラーが開発したzlib圧縮ライブラリの一部として使われている。Adler-32 に基づくローリングチェックサムが rsync で使われている。 アルゴリズム[編集] Adler-32 チェックサムは、まず2つの16ビットのチェックサム A と B を計算し、それらを連結して32ビットの整数にする。Aは全てのバイトの総和に1を加えた値、B は A を計算している各ステップの値を累積した総和であ
An external FNV Wikipedia page exists History and use of the FNV hash FNV has been put into the public domain via the Creative Commons CC0 1.0 Universal (CC0 1.0) Public Domain Dedication license. The FNV-1 hash in a nutshell The FNV-1a hash minor variation FNV-1/FNV-1a hash parameters A few remarks on FNV primes Changing the FNV hash size with xor-folding FNV hash with a non-power of 2 size FNV r
Hash tables are one of the most commonly used data structures in computer science, due to their O(1) access time. However, this assumes a perfect hash function — the complexity can increase to O(n) when there are a lot of hash collisions. Historically, most libraries used weak, non cryptographic hashes for efficiency. These worked well for random strings, but the simplicity of the hash functions u
以前、僕が実装している web サーバ Mighty が、Haskell で書いているにも関わらず、セグメンテーションフォールトを起こしていた。調べたところ hashable ライブラリがリンクする C の DJBX33X が、SipHash に変わったことが原因だった。このときから SipHash が気になっていたし、以前社内で説明した "Efficient Denial of Service Attacks" との関係も知りたかったので、少し調べてみた。この記事は、その覚え書き。 Hash-flooding DoS の歴史 1998 年に Alexander Peslyak 氏が Phrack Magazine で、Hash-flooding DoS を受けたことを報告している。ハッシュは、N 個の要素を挿入するのに通常 O(N) かかるが、ハッシュ値がすべて衝突する最悪の場合では O
『Ideal Hash Trees』*1という論文を(必要なところだけ、だいたい)読み終わったので、そのメモ等。 概要 AMT(Array Mapped Trie)という基盤的なデータ構造を使って、ideal(nearly ideal)なHash Treesを作ろう、というような話。 AMTの応用例として、以下のようなものが説明されている。 Hash Array Mapped Trie(HAMT) ハッシュマップ 各種操作がO(1) ハッシュテーブルの初期サイズを(あまり)気にする必要がない 要素が増えた場合のリサイズのコストが小さい*2 リサイズ不要な実装も可能だがその場合はO(log N)に。※ Nは要素数。今回の実装はこっち。 成功検索時、キーの比較は一回しか生じない ただし、キーのハッシュ値の計算処理は(異なるハッシュ関数で)複数回行われることがある。 Clojureの組み込みのハ
以下を理解しようとしたときのメモ: Efficient Denial of Service Attacks on Web Application Platforms slides n.runs-SA-2011.004 - web programming languages and platforms - DoS through hash table 概要 外部からのデータに対して、効率の悪いアルゴリズムで処理するとセキュリティホールになるという一般的な問題の一例。N要素のハッシュテーブルの作成は、平均でO(N)だが、最悪で O(N^2) となる。 いろんな言語で、DJB のハッシュが利用されている。 DJBX33A Equivalent string で衝突をたくさん作れる。理解は容易。 DJBX33X 中間一致(Meet-in-the-middle)攻撃で衝突をたくさん発見できる。この理
HashDoS脆弱性との戦い! Rubyコミッター・卜部昌平が明かすプログラム堅牢化のノウハウ 過去、HashDosの影響を受けたRuby。言語開発者はいかにしてこうした問題に対応してきたのでしょうか。コミッターである卜部氏の貴重な記録を公開します。 2011年の末頃、HashDoSという脆弱性が公表され、Rubyもこの影響を受けた。本稿の筆者である卜部昌平(うらべ・しょうへい/@shyouhei/以下、卜部)は、報告当初からRuby側のチームメンバーとしてプログラム本体の修正を担当した。以下はその記録である。言語開発者たちが普段どのようなことを考え、どういった技術を用いて開発やバグフィックスを行っているのか。その概要を知ってもらえれば幸いだ。 オブジェクト指向スクリプト言語 Ruby HashDoSの概要 なぜ約6年後の今、修正内容を公開するに至ったか? 前史:すでに内包されていたリスク
バイナリハッシュ木の例 暗号理論および計算機科学において、ハッシュ木(Hash tree, ハッシュツリー)またはマークル木(Merkle tree)とは、全ての葉ノードにデータブロックのハッシュ値がラベル付けされ、内部ノードには、その子ノードのラベルのハッシュ値がラベル付けされている木構造である。ハッシュ木を使用すると、大規模なデータ構造の内容を、効率的かつ安全に検証することができる。このデータ構造はハッシュリストとハッシュチェインの組み合わせでできている。 特に、ハッシュ関数にTigerを使用したものはTiger TreeまたはTiger Treeハッシュとも呼ばれる。 用途[編集] ハッシュ木は、単独または複数のコンピュータで保存・処理・転送される任意のデータの検証処理に利用できる。現在の主な用途としては、Peer to Peerネットワークにおいて他のピアから受信したデータブロック
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く