2011-11-24 6 views
7

के लिए Luhn या Verhoeff एल्गोरिदम सबसे पहले, मुझे सच में यकीन नहीं है कि यह स्टैक ओवरफ्लो पर होना चाहिए, लेकिन मैंने सोचा कि मैं वैसे भी पूछने की कोशिश करूंगा।क्रेडिट कार्ड नंबर

अतीत में मैंने क्रेडिट कार्ड नंबरों में त्रुटि जांच के लिए हमेशा लून एल्गोरिदम का उपयोग किया है, लेकिन आज मैंने सोचा कि मैं PHP में verhoeff एल्गोरिदम लागू करता हूं, मुख्य रूप से समय को मारने के लिए।

मैंने इसे अपने कार्ड नंबरों पर परीक्षण किया और यह ठीक काम किया, जिसने मुझे इस बारे में सोचना शुरू कर दिया कि मुझे भविष्य में अपने क्रेडिट कार्ड नंबर त्रुटि जांच के लिए verhoeff का उपयोग करना चाहिए या नहीं।

अब मेरे सवालों का:

वहाँ Luhn से अधिक Verhoeff प्रयोग करने में कोई महत्वपूर्ण लाभ होगा?

मुझे पता है कि वर्हॉफ़ इसके क्रियान्वयन में थोड़ा अधिक जटिल है और यह लुहान की तुलना में अधिक प्रतिलेखन त्रुटियों का पता लगा सकता है, जो स्वाभाविक रूप से मुझे विश्वास करने के लिए प्रेरित करेगा कि यह थोड़ा धीमा है, लेकिन अधिक प्रतिलेखन त्रुटियों का पता लगाने के लाभ से अलग है और लाभकारी (यदि आप इसे वास्तव में कॉल कर सकते हैं) थोड़ा धीमा होने के कारण, मैं किसी अन्य वास्तविक मतभेद के बारे में नहीं सोच सकता।

क्या Verhoeff एल्गोरिदम सभी प्रमुख कार्डों के लिए काम करेगा?

मुझे पता है कि लूहान सभी प्रमुख कार्डों के लिए काम करेगा लेकिन क्या वेरहॉफ भी उन सभी के लिए काम करेगा? मैं इस धारणा के तहत हूं कि यह उन सभी के लिए काम करेगा लेकिन मैंने सोचा कि मुझे वैसे भी जांच करनी चाहिए।

क्या कोई कारण है कि मैंने केवल क्रेडिट कार्ड नंबरों की जांच करने के लिए लोगों को लुहान का उपयोग करके देखा है?

डेवलपर के रूप में मेरे सभी समय में मैंने केवल क्रेडिट कार्ड नंबरों की जांच करने के लिए लोगों को लुहान एल्गोरिदम का उपयोग करके देखा है। क्या इसके लिए कोई अच्छा कारण है, या यह बस इतना है कि लुहान अधिक प्रसिद्ध है?

किसी भी मदद की सराहना की जाएगी, आपके लिए धन्यवाद।

उत्तर

8

वे अलग-अलग एल्गोरिदम हैं और अलग-अलग परिणाम दे सकते हैं (यदि परिणाम हमेशा समान होते हैं तो वे शक्ति में बराबर होंगे - आपने पहले ही कहा है कि वेरहॉफ़ मजबूत था, इसलिए आपको यह मानना ​​होगा कि कुछ संख्याएं हैं जो अलग-अलग मान देती हैं लुहान के लिए!)।

क्रेडिट कार्ड के साथ उपयोग किए जाने पर आप शेष संख्या के विरुद्ध अंतिम अंक की जांच करते हैं। यह चेक अंक कार्ड पर मौजूद है (इसलिए तय किया गया है) और लुहान एल्गोरिदम का उपयोग करके गणना की जाती है।

तो आप वेरहॉफ़ का उपयोग नहीं कर सकते हैं, क्योंकि क्रेडिट कार्ड पर अंतिम अंक लुहान के लिए है। Verhoeff का उपयोग करने के लिए आपको पहले से मौजूद कार्डों (कुछ) के अंतिम अंक को बदलना होगा।

मूल क्रेडिट कार्ड प्रारूप तैयार करने वाले लोगों में यह विकल्प था (मॉड्यूल ऐतिहासिक विवरण) और लुहान के साथ जाने का फैसला किया। उन्होने चुना। आप पूर्व-निरीक्षण में अपना निर्णय नहीं बदल सकते हैं क्योंकि मौजूदा कार्ड पर लुहान चेक अंक मौजूद है।

(मैं पता नहीं कैसे आप इस एल्गोरिथ्म के साथ अपने कार्ड की जांच करने में कामयाब रहे है ईथर आप भाग्यशाली थे, या अपने कोड टूट गया है, या मैं गलत हूँ ...।) सरल शब्दों में

: ऐसा नहीं होगा काम। वे वही नहीं हैं और क्रेडिट कार्ड जारीकर्ता द्वारा लुहान की पसंद की गई थी।

अधिक जटिल शर्तों में: यदि दोनों संगत थे तो वे सत्ता में बराबर होंगे और स्विचिंग में कोई बात नहीं होगी। आपके पास अलग-अलग शक्तियों के दो चेकसम नहीं हो सकते हैं जो समान परिणाम देते हैं। यह एक सूक्ष्म बिंदु है, लेकिन इसे खत्म करें ...

+0

अपना उत्तर पढ़ने के बाद भी मैं उलझन में हूं कि मैंने अपने कार्ड कैसे चेक किए हैं। मैंने 2 अलग-अलग कार्ड की जांच की, एक मास्टरकार्ड कहता है, एक वीजा कहता है, और दोनों "सत्यापित" हैं। अपना उत्तर पढ़ने के बाद मैं इसमें और अधिक प्रयास करने जा रहा हूं, और मैं निश्चित रूप से यह देखने के लिए इंतजार करूँगा कि अन्य उत्तरों क्या फसल हो सकते हैं;) आपके समय के लिए धन्यवाद! –

+4

उदाहरण वैध पैन; 5555555555554444 luhn = pass verhoeff = असफल –

+0

एक बार फिर आपके उत्तर एंड्रू के लिए धन्यवाद। मुझे लगता है कि मैं सिर्फ इस भाग्य को भाग्यशाली बना दूंगा। लेकिन आपने अब मुझे यह बहुत बेहतर समझने में मदद की है, और एलेक्स के, आपके उदाहरण के लिए धन्यवाद। –