4

銀行/電信送金を可能にする支払いシステムの場合、支払いを目的の対応するユーザーアカウントに確実に関連付ける必要があります。このため、ユーザーは自分のアカウントに関連付けられている転送に参照番号を含める必要があります。

次の(おそらく一般的な)エラーのうち最大N個を検出して修正できるように、冗長性(追加のシンボル)が組み込まれたこの番号を生成したいと思います。

  • シーケンス内の誤った記号(タイプミス)
  • 2つのシンボルの交換(これは2つの間違ったシンボルと同じだと思います)
  • シーケンスに欠落しているシンボル
  • シーケンス内の追加の記号

少し調べてみたところ、リードソロモンやBCHがよく使われているコードのようです。私が見つけられなかった唯一のことは、それらが最後のケース、つまり余分な記号をサポートしているかどうかです。

また、ランダムな「修正済み」の結果を表示するのではなく、「これは非常にめちゃくちゃなので、修正できません」というエラーモードをコードに持たせたいと思います。これは、まばらな参照番号を生成し、誤って有効な参照番号にヒットする可能性が低いことを期待するだけで実行できると思いますが、「最大5つのエラーを修正できますが、 3つ以上、私はあきらめます。」

何かご意見は?ありがとうございました!

4

1 に答える 1

1

これについてはまだ詳しく調べていませんが、この問題を解決するための予備的な方法を考え出したと思います。これについては、今のところ追求します。

32文字のアルファベットからアカウント参照番号を作成します。このアルファベットを16文字の2セットに分割し、ランダムなタイプミスによって他のセットから文字が生成される可能性を最小限に抑えるようにセットを最適化します。たとえば、キーボードを半分に分割し、一方のセットに[1]、[4]、[v]、[z]の角があるボックス内の文字を使用し、もう一方のセットに他の文字を使用します。

次に、[14、8、7] 16リードソロモンコードを使用して32ビットのアカウント番号をエンコードします。これを最初に8つの4ビット文字に分割しました。

結果のメッセージ、私は最初のアルファベットの半分から1番目、3番目、5番目、...の文字を選択し、2番目のアルファベットの半分から他の文字を選択することによって参照番号に変わります。そうすれば、文字の交換、余分な文字、または欠落している文字を検出した場合に、参照番号を「再同期」できます。

再同期後、RSコードにより、最大3つの他のタイプミスを修正できるようになります。それ以上の間違いを犯した場合は、支払いに関する問題が発生する可能性があります... :)

このアプローチについて誰かがコメントをいただければ幸いです。

于 2012-11-15T04:54:49.467 に答える