16

チェック ディジットの生成に使用されるアルゴリズムをリバース エンジニアリングしようとしています。

数字は 8 桁で、最後の 1 桁がチェック ディジットです。私はそれをテストするための何千もの有効な数字を持っています.

標準の Luhn、Verhoeff、modulo-10 アルゴリズム (考えられるすべての重みのブルート フォース チェック) を試しましたが、答えが見つかりませんでした。

これを計算することは可能ですか?何か案は?

有効な数値の例を次に示します。

1002784-5
1000514-7
1001602-8
1001255-2
1001707-1
1003355-5
1005579-1
1004535-0
1004273-1
1001695-9
1004565-9
1000541-9
1001291-1
1005866-1
1004352-7

編集: ありがとうございます - 残念ながらコードにアクセスできません。番号は税番号です。番号が正しく入力されていることを確認できる必要があります。私の調査によると、ほとんどの国はかなり標準的な modulo-10 型システムを使用しているようです。約60,000の番号にアクセスできます。

問題を解決することは不可能である可能性があることを理解しています。それは学術的な問題でした。

4

1 に答える 1

2

最初にコンテキストを確認します。

コンテキストがクレジット カード、運転免許証、政府のライセンス番号 (SSN ではない) である場合、Luhn または Mod 10 が考えられます。他の業界の場合、その業界にはデファクト スタンダードがありますか? そうでない場合、数値を使用するシステムの開発者は、デファクト スタンダードを持つ業界のプレーヤーでもありますか?

必要がなければ、車輪の再発明を好む人はいません。

それでも問題が解決しない場合は、次のことに注意してください。

テスト対象のキーのすべての数字がチェック ディジットに到達するために使用されると想定しないでください。チェック ディジット (またはその他の組み合わせ) の計算に 4 桁または 8 桁のみが使用されている可能性があります。また、チェック ディジットに到達するために他のディジットと共に使用される外部 PREFIX 番号が存在する可能性もあります。だから...同じチェックデジットですべての数字を並べて、類似点を見てください。それらに数字を追加すると、常にチェックデジットに到達できますか? 最初の数桁だけをテストできますか? 下数桁?一桁おき?

幸運を。

于 2012-11-23T07:57:16.530 に答える