2011-11-24 12 views
7

まず、私はこれがstackoverflowにあるべきかどうかは分かりませんが、とにかく尋ねようと思っていました。LuhnまたはVerhoeffアルゴリズムのクレジットカード番号

は、過去に私はいつものクレジットカード番号にエラーチェック用のLuhnアルゴリズムを使用していたが、今日、私は主に時間を殺すために、PHPでVerhoeff氏アルゴリズムを実装するだろうと思いました。

は、私は自分のカード番号の上にそれをテストし、それは私が私が私のクレジットカード番号のエラーは、将来的にチェックするためのLuhn上Verhoeff氏を使用する必要があるかどうかについて考え始めた、うまく働きました。今

私の質問:

はのLuhn上Verhoeff氏を使用してのいずれかの重要な利点がありますか?

私は、verhoeffは実装がやや複雑で、luhnよりも転写エラーを検出できることを知っています。これは当然少し遅くなると思いますが、転写エラーや(実際にそれを呼ぶことができれば)わずかに遅くなるという利点はありません。私は他の本当の違いは考えられません。

は、すべての主要なカードのVerhoeff氏アルゴリズムの動作しますか?

私はのLuhnが主要なカードのすべてのために動作しますが、それらのすべてのためにも、Verhoeff氏に動作することを知っていますか?私はそれらがすべてのために働くという仮定の下にあるが、私はとにかくチェックするべきだと思った。

私は唯一のクレジットカード番号をチェックするのLuhnを使っている人を見ている理由はありますか?私は本当にクレジットカード番号を確認するにはLuhnアルゴリズムを使用している人々を見てきた開発者としての私の時間の全てにおいて

。 これには正当な理由がありますか、それとも単にluhnがもっとよく知られているのでしょうか?

ご協力いただければ幸いです。ありがとうございます。

答えて

8

これらのアルゴリズムは異なるため、異なる結果が得られる可能性があります(結果が常に同じであれば、それらは同じパワーになるでしょう - 既にVerhoeffが強かったと言いましたので、異なる値Luhnに!)。

クレジットカードで使用する場合、残りの数字と最後の桁をチェックします。このチェックデジットはカード上に存在するため(固定されています)、Luhnアルゴリズムを使用して計算されます。

Verhoeffを使用することはできません。クレジットカードの最終桁はLuhnのためです。代わりにVerhoeffを使用するには、既に存在するカードのうちのいくつかのカードの最終桁を変更する必要があります。

オリジナルのクレジットカード形式を設計した人々は、この選択肢(モジュロの歴史的詳細)を持ち、Luhnと一緒に行くことに決めました。彼らが選んだ。 Luhnの小切手桁は既存のカードに存在するため、振り返って決定を変更することはできません。簡単に言えば

(私はあなたがこのアルゴリズムであなたのカードを確認するために、管理方法見当がつかないイーサあなたはラッキーだった、またはあなたのコードが壊れている、または私は間違っている...。)

:それはないだろう作業。彼らは同じではなく、Luhnの選択はクレジットカード発行者によって行われました。

より複雑な用語では、2つが互換性があった場合、それらは等しい電力であり、切り替えに何のポイントもありません。同じ結果をもたらす異なるパワーのチェックサムを2つ持つことはできません。微妙な点ですが、それ以上に考えてください。

+0

答えを読んだ後、私は自分のカードをどのようにチェックしたのか混乱します。私は2つの異なるカードをチェックしました.1つはマスターカード、1つはビザ、もう1つは "ベリファイ"です。あなたの答えを読んだ後、私はこのことをさらに深く研究しようとしています。そして、私はもちろん、他の答えがどんなものになるかを見て待っています;)ありがとうございました! –

+4

有効なPANの例。 5555555555554444 luhn = pass verhoeff = fail –

+0

再度お返事ありがとうございました。私はこれをちょうど運のためにチョークすると思う。しかし、あなたは私がこれをもっと良く理解するのを手伝ってくれました。アレックスK、あなたの事例に感謝します。 –

関連する問題