May Hua
Luhn Algorithm ကို ဂျာမန်ကွန်ပျူတာပညာရှင် Hans Peter Luhn က ၁၉၅၀ မှာစတင်တီထွင်ခဲ့တာပဲ ဖြစ်ပါတယ်။ Luhn Algorithm ကို credit card number တွေလိုမျိုး serial number တွေ မှန်မမှန် စစ်တဲ့နေရာမှာ အသုံးပြုကြပါတယ်။
ဒါပေမယ့် တစ်ခုနားလည်ထားရမှာက user က ထည့်လိုက်တဲ့ number တွေက valid ဖြစ်တဲ့ credit card number တွေဟုတ်မဟုတ်ကိုပဲ စစ်ပေးတာပါ။ ဘဏ်နဲ့သွားချိတ်ပြီး credit card ပိုင်ရှင်ရဲ့ ကဒ်နံပါတ် ဟုတ်မဟုတ်ကို စစ်ပေးတာမျိုးမဟုတ်ပါဘူး။
Luhn Algorithm is designed to catch common input errors.
အများအားဖြင့် ဂဏန်းနှစ်လုံး နေရာချင်းလွဲသွားတာတို့ ဂဏန်းတစ်လုံးကို နှစ်ခါထပ်ရေးမိတာမျိုး တို့လို error တွေကို စစ်ပေးတာပါ။ ဘာလို့ အဲ့လို error တွေကို စစ်ပေးတာလဲဆိုတော့ credit card နံပါတ်တွေလို ဂဏန်းအများကြီးကို ရိုက်ထည့်ရတဲ့အခါမှာ အပေါ်က error တွေက အဖြစ်များကြလို့ပါ။
Credit card number တွေမှာ ဂဏန်း 16 လုံးရှိကြပါတယ်။
4583 2174 7762 1137 ဒီလိုပုံစံမျိုးတွေပါ။ card ရဲ့ brand တွေပေါ်မူတည်ပြီး ရှေ့ဆုံးနံပါတ်ကို ပြောင်းလေ့ရှိပါတယ်။ Visa card ဆိုရင် 4 နဲ့စပါတယ်။ Master card ဆိုရင် 5 နဲ့စပါတယ်။ Discover ဆိုရင် 6 ပါ။ နောက်က ဂဏန်းတွေကတော့ ဘဏ်ပေါ်မူတည်ပြီး ပြောင်းပါတယ်။
Algorithm ရဲ့ တွက်ပုံတွက်နည်းက ဒီလိုပါ။
4 5 8 3 2 1 7 4 7 7 6 2 1 1 3 7
8 5 16 3 4 1 14 4 14 7 12 2 2 1 6 7
ဂဏန်းတွေရဲ့ ညာဘက်ကနေ စတွက်ပါတယ်။ ညာဘက်ဆုံး ဂဏန်းကို ကျော်ပြီး နောက်တစ်လုံးကို 2 နဲ့မြှောက်ပါ။ အပေါ်မှာပြထားတဲ့အတိုင်း 7 ကိုကျော်ပြီး 3 ကို 2 နဲ့မြှောက်ပါ။ ပြီးရင် တစ်လုံးကျော်ကို 2 နဲ့မြှောက်။ နောက်တစ်လုံးကျော်ကို 2 နဲ့မြှောက်။ အဲ့တာကို ဂဏန်းမကုန်မချင်း ရှေ့ဆုံး ဂဏန်းရောက်တဲ့အထိလုပ်ရမှာပဲဖြစ်ပါတယ်။
နောက်အဆင့်ကတော့ 2 နဲ့မြှောက်ထားတဲ့ ဂဏန်းတွေက 2 digits ဖြစ်သွားရင် digit အချင်းချင်း ပြန်ပေါင်းပေးလိုက်ပါ။ ဥပမာ 16 ရရင် 1 နဲ့ 6 နဲ့ကို ပေါင်းပေးလိုက်ပါ။ ဒါဆို 7 ရပါလိမ့်မယ်။
တချို့တွေကတော့ 2 နဲ့မြှောက်ထားတဲ့ ဂဏန်းတွေက 9 ထက်ကျော်သွားရင် 9 ထဲက ပြန်နှုတ်လိုက်ပါ ဆိုတဲ့နည်းလည်းရှိပါတယ်။ ရတဲ့အဖြေကအတူတူပါပဲ။ အပေါ်က ဂဏန်း 16 ထဲက 9 ကို နှုတ်ရင်လည်း 7 ပဲရပါတယ်။ ဘယ်လိုနည်းနဲ့တွက်တွက်ပါ။ အဖြေအတူတူပါပဲ။
4 5 8 3 2 1 7 4 7 7 6 2 1 1 3 7
8 5 16 3 4 1 14 4 14 7 12 2 2 1 6 7
1 + 6 = 7, 1 + 4 = 5,
8 5 7 3 4 1 5 4 5 7 3 2 2 1 6 7
ပြီးရင် အပေါ်က ဂဏန်းတွေအားလုံးကို ပေါင်းလိုက်ပါ
8 + 5 + 7 + 3 + 4 + 1 + 5 + 4 + 5 + 7 + 3 + 2 + 2 + 1 + 6 + 7 = 70
ပေါင်းလဒ်ကို 10 နဲ့စားလို့ပြတ်ရင် (အကြွင်း 0 ထွက်ရင်) မှန်ကန်တဲ့ တစ်နည်းပြောရရင် valid ဖြစ်တဲ့ credit card number ပဲဖြစ်ပါတယ်။
ညာဘက်ဆုံးနံပါတ်ကို check digit ဒါမှမဟုတ် checksum digit လို့ခေါ်ပါတယ်။ ဘဏ်တွေကနေ card number တွေ ထုတ်ပေးတဲ့အခါ ရှေ့က ဂဏန်း ၁၅ လုံးပေါင်းပြီးမှ ပေါင်းလဒ်ကို 10 နဲ့စားလို့ပြတ်အောင် လိုအပ်တဲ့ ဂဏန်းကို နောက်ဆုံးမှာ ထည့်လိုက်တာပါ။
နားလည်အောင် ပြောရရင် ရှေ့ဆုံး ဂဏန်း ၁၅ လုံး ပေါင်းလဒ်က 63 ဖြစ်နေရင် 10 နဲ့စားလို့ပြတ်အောင် နောက်ဆုံး ဂဏန်းက 7 ဖြစ်သွားပါတယ်။
အပေါ်က ဂဏန်း 15 လုံးကို ပေါင်းကြည့်ပါ။ 63 ရပြီး နောက်ဆုံးဂဏန်းက 7 ဖြစ်နေတာကို တွေ့ရပါလိမ့်မယ်။ ဒါကတော့ ဘဏ်တွေဘက်က issue လုပ်ပေးတဲ့ပုံစံပါ။
8 + 5 + 7 + 3 + 4 + 1 + 5 + 4 + 5 + 7 + 3 + 2 + 2 + 1 + 6 + 7 = 70
63
အနည်းငယ်တော့ ရှုပ်သွားပါလိမ့်မယ်။ Algorithm တစ်ခုကို လေ့လာတဲ့အခါ စစလေ့လာရင် ရှုပ်ပြီး ခက်တယ်ထင်ရပေမယ့် resources နှစ်ခု သုံးခုလောက်ကနေ ရှာဖတ်ပြီး လေ့ကျင့်ကြည့်ပြီးရင် နားလည်ပြီး လွယ်သွားပါလိမ့်မယ်။ နောက်နေ့တွေမှာ နောက်ထပ် Algorithm တွေနဲ့ပြန်လာခဲ့ပါမယ်။
Keep Reading