5

コードの末尾に 1 文字を追加して ([A-Z0-9] にも) 4 文字の [A-Z0-9] コードをユーザーが誤って入力したことを検出するチェックサム アルゴリズムを選択する必要があります。

ASCII コードを合計してモジュロを適用することは、2 つのキーストロークを反転しても気付かれないため、悪い解決策です。

私はおそらくフレッチャーアルゴリズムを使用しますが、このユースケース用に設計されたアルゴリズムを誰かが知っていることを知りたいです(非常に少量のバイト、位置依存)?

ありがとうございました。

4

1 に答える 1

8

ISO 7064 Mod x,y アルゴリズムを試すことができます。ISOの説明によると:

ISO/IEC 7064:2002 で指定されているチェック キャラクタ システムは検出できます ( http://www.iso.org/iso/home/store/catalogue_ics/catalogue_detail_ics.htm?csnumber=31531 ):

  • すべての単一置換エラー (1234 を 4234 にするなど、1 文字を別の文字に置換)。
  • すべてまたはほぼすべての単一 (ローカル) 転置エラー (2 つの単一文字の転置。隣接するか、間に 1 文字が含まれる。たとえば、12354 または 12543 の場合は 12345)。
  • すべてまたはほぼすべてのシフト エラー (文字列全体の左または右へのシフト)。
  • 二重置換エラーの割合が高い (1234567 に対して 7234587 など、同じ文字列内の 2 つの別個の単一置換エラー)。
  • 他のすべてのエラーの割合が高い。

次のような部分的な実装がいくつかあります。

たとえば、ISO 7064 Mod 37,36 を使用すると、0 ~ 9 と AZ (データとチェック文字) を使用できます。アルゴリズムの詳細な説明 (ISO を購入したくない場合) は、次の場所にあります。

于 2012-06-28T12:26:06.617 に答える