0

Luhn アルゴリズムを使用して、スウェーデンの社会保障番号を検証することにしました。自分で関数を作成することで、いくつかの問題はありますが、これを計画どおりに機能させることができました。私のコードと私が試した他のコードでは、たとえば 2222222222 と 4444444444 のような簡単な組み合わせが有効であることがまだ検証されていることがわかりました。

これらの 2 つの例は簡単に回避できますが、残りの偽の組み合わせについて疑問に思いましたが、アルゴリズムを使用して真であると検証されます。

それは私ですか、そして私が見たそれらの例は、コードで何か間違ったことをしたのですか、それともこれはアルゴリズムの既知のエラーですか? もしそうなら、どうすればそれを解決できますか、それとも他のより適切なアプローチがありますか?

4

2 に答える 2

3

Luhn アルゴリズムは、SSN 番号が有効かどうかを検証するためのものではありません。有効な形式であることのみ。誤って入力された番号を見つけて、ハッカー/スパマーがシステムを破壊しようとする試みをより困難にするのに役立ちます。間違った番号が入力されるのを防ぐためのものではありません。

このアルゴリズムは、米国のクレジット カード番号にも使用されます。しかし、4111111111111111 のようなテスト カード番号は問題なく合格します。成功しなかった場合でも毎回コストが発生する支払いを試みる前に、悪い番号をキャッチするのに非常に役立ちます。しかし、最終的にクレジット カード番号が有効かどうかを知るには、実際に請求する必要があります。

于 2013-03-21T18:36:01.063 に答える
1

理論的には、これら有効な数値です。Luhnアルゴリズムは、数字を間違って入力した人のためのチェックサムであり、数字を構成したかどうかを判断するためのものではありません。

たとえば、(英国の)ペイメントゲートウェイで使用される標準のテストクレジットカードの1つは4444333322211111であり、これはたまたま有効なVisaカード番号です。カードは誰にも割り当てられていないため、実際にカードで支払うことはできませんが、それはチェックディジットとは関係がなく、数字の背後にある意味と関係があります。

于 2013-03-21T18:38:00.713 に答える