modナンバーのルールと応用

「modナンバーのルールと応用」の編集履歴(バックアップ)一覧に戻る

modナンバーのルールと応用 - (2009/05/08 (金) 19:33:27) の編集履歴(バックアップ)


このページの情報を利用することで、ハッシュ衝突で実質400個も使えなかったMODナンバーを30倍以上に増やすことができます。

レポート1

NxxxXXXX_Xxx

_の文字はカテゴリ識別ではなく、アイテム番号の一部です
従来の8桁_3桁というナンバリングは単に可読性を求めた場合の物で、実際は9桁3桁でも問題なく処理されます。

レポート2
例としてN006KASUXE00とN108KASU_E00から得られるハッシュ値が共に0428B27Eである等、単に一部の文字列が違えば問題がないという訳ではなく、一文字変更した程度ではあらゆる文字列で衝突が発生し、この文字列なら絶対衝突しない、という組み合わせはありません。

レポート3
10の倍数はぶつかりやすいという言い伝えですが、正確には10の倍数に限った事象ではありません。
NXXXは3桁でなく実際には2桁+αとして処理されるため、XXXで3桁分の集合という訳にはいかない仕様になってしまっています。
巡回冗長検査で、ハッシュ値を求める多項式として0x1aという値を採用し、x<<4+x<<3+x<<1を加算して設計上問題のない範囲に集合を作れる筈でしたが、そもそもそこに問題があったようです。


結果としては_を他の文字に変えると、_の領域に一切かぶらない文字が多数見つかりました。
ただし、_以外の文字同士の間にも衝突集合が必ず存在し、絶対に衝突が起きない文字は存在しません。
データベースのレインボーテーブルを活用して衝突する集合を回避しながら運用する事で、
実使用可能なアイテム番号の範囲が400個程度という制限を、大きく拡大する事は可能だと思います。
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。