ความหมายเลขบัตรเครดิต


#1

ตัวเลขบนบัตรเครดิต ???

  1. เค้ารู้ได้งัยว่า เลขบัตรเครดิตนั้นถูกต้อง ?
  2. บัตรเครดิต นั้น เป็นของ อะไร , visa , master, … ?

ถ้าจะอธิบายคงต้องเริ่มจาก คำถามที่ 2 ก่อนดีกว่า
ถาม รู้ได้งัยว่าบัตรเครดิตนั้นเป็นของอะไร ?

โครงสร้าง ของ ตัวเลขบนบัตรเครดิต
1st digit : the Major Industry Identifier (MII) : จะบอก ประเภทของธุรกิจที่่เป็นคนออกบัตรให้คุณใช้ … เช่น Visa, Mater Card, American express , …

MII Digit Value Issuer Category
0 ISO/TC 68 and other industry assignments
1 Airlines
2 Airlines and other industry assignments
3 Travel and entertainment
4 Banking and financial
5 Banking and financial
6 Merchandizing and banking
7 Petroleum
8 Telecommunications and other industry assignments
9 National assignment
ส่วนมากที่เราๆ ท่านๆ คุ้นเคยก็คงต้อง ขึ้นด้วยเลข 3, 4 และ 5 … เอ้าถึงเวลาควัก บัตรเครดิตกันออกมาดูหน่อยซิ
ตอบ อืมม ถูก ของผม ขึ้นด้วย เลข 4 เกี่ยวกับ Banking and financial จริงๆ

ถามต่อ แล้วจะรู้ได้งัย อ่ะ ว่าบัตรผมเป็น Visa , Master card หรือ American Express … ?
ตอบ ดูที่ 6 digits แรกครับนับ รวม MII เข้าไปด้วยนะครับ ตามตารางข้างล่างเลย ไม่ผิดเพี้ยนไปจากนี้แน่นอน

Issuer { Identifier Card Number } Length
Diner’s Club/Carte Blanche { 300xxx-305xxx, 36xxxx, 38xxxx } 14
American Express { 34xxxx, 37xxxx } 15
VISA { 4xxxxx } 13, 16
MasterCard { 51xxxx-55xxxx } 16
Discover { 6011xx } 16

เออ จริงแฮะ ของผมขึ้นด้วยเลข 4 เป็น VISA

ถาม แล้วตรงไหนมันถึงจะบอกหมายเลขบัญชีของผมจริงๆ ล่ะเนี่ย ?
ตอบ เดาถูกครับ ก็ ตั้งแต่ ตำแหน่งที่ 7 เป็นต้นไปนั่นแหละ จนถึงตัวเลขก่อนสุดท้ายครับ (? ก่อนสุดท้าย)

เพราะว่าตัวเลขก่อนสุดท้าย คือ ตัวเลขที่เอาไว้ check ความถูกต้องครับของตัวเลขบนบัตรของคุณครับ (กลับไปคำถามแรก) … ซึ่งถ้าอยากเรียกแบบ เท่ ๆ ก็ได้ เราเรียกตัวเลขที่ทำหน้าที่แบบนี้ว่า “Check Digit”

ถาม แล้วเค้ารู้ได้งัยว่า เลขบัตรเครดิตนั้นถูกต้อง ?
ตอบ ใช้ the luhn algorithm ครับ

Luhn Algorithm

  1. เขียน หมายเลขบนบัตรเครดิตของคุณ
    4408-0412-3456-7890

  2. คูณด้วย 2 โดยเริ่มจากตำแหน่งก่อนสุดท้าย ตัวเว้นตัว ( ห้ามคูณ 2 ที่ chek digit)

(42) 4 (02) 8 – (02) 4 (12) 2 – (32) 4 (52) 6 – (72) 8 (92) 0

จะได้
(8 ) 4 (0) 8 – (0) 4 (2) 2 – (6) 4 (10) 6 – (14) 8 (18 ) 0

  1. ถ้ามีตัวไหนเกิน 10 ให้ ลบด้วย 9

(8 ) 4 (0) 8 – (0) 4 (2) 2 – (6) 4 (10-9) 6 – (14-9) 8 (18-9) 0

จะได้
(8 ) 4 (0) 8 – (0) 4 (2) 2 – (6) 4 (1) 6 – (5) 8 (9) 0

  1. นำตัวเลขที่ได้มาบวกกันทั้งหมด
    (8 ) + 4 + (0) + 8 + (0) + 4 + (2) + 2 + (6) + 4 + (1) + 6 + (5) + 8 + (9) + 0
    จะได้ผลลัพธ์คือ
    67

  2. mod 10 ถ้าได้ 0 คือตัวเลขที่ถูก แต่ถ้าไม่ใช่ 0 คือผิด
    ในที่นี้ ผลลัพธ์ 67 mod 10 ได้ 7 แสดงว่าเลข credit card ชุดนี้ผิดครับ

แต่อย่าเพิ่งตกใจ !! … เรามีวิธีที่ทำให้เลขชุดนี้ถูกต้อง คือ ใช้ check digit นี่แหละครับ เพราะ check digit ไม่ต้องคูณกับ 2 และเป็นตัวเลขที่ไม่ีมีอะไรมายุ่งกับมัน .
ดังนั้น ถ้าเราต้องการทำให้เลขชุดนี้ถูกต้อง เราต้องมาแก้ที่ค่าของ check digit ครับ
เนื่องจากผลลัพธ์ที่เราได้คือ 67 ซึ่ง mod 10 แล้วไม่เท่า่กับ 0 ดังนั้น
เราต้องคิดว่าจะทำยังงัย ให้ 67 mod 10 แล้วเท่ากับ 0 ,ตอบ เราต้องเอา 67 บวก 3 จะได้ 70 ครับซึ่ง 70 จะ mod 10 แล้วได้เท่ากับ 0 … แน่นอนการบวก 3 เราก็ต้องไปบวกกับ ตัวเลขในตำแหน่งที่ไม่มีอะไรมายุ่งกับมัน หรือ เรียกให้เท่ ๆ อีกว่า ค่าคงที่ ซึ่งในที่นี่คือ Check digit นั่นเอง
สรุปจะได้ ตัวเลขที่ถูกต้องเป็น 4408-0412-3456-7893 ครับ

Reference sites : โอว … ต้องขอโทษครับ เพราะว่า อันนี้ผมผิดพลาดเอง ลืม add