Security Tools

ทำความเข้าใจบัตรเครดิตที่ถูกต้อง: โครงสร้างและการตรวจสอบความถูกต้อง

คู่มือฉบับสมบูรณ์สำหรับทำความเข้าใจโครงสร้างหมายเลขบัตรเครดิต วิธีการตรวจสอบความถูกต้องด้วย Luhn algorithm และความสำคัญของบัตรเครดิตที่ถูกต้องในการทำธุรกรรมที่ปลอดภัย

6 นาทีในการอ่าน

Credit cards and payment terminal

บัตรเครดิตเป็นส่วนสำคัญของการพาณิชย์ยุคใหม่ แต่คุณเคยสงสัยไหมว่าอะไรทำให้หมายเลขบัตรเครดิตมีความถูกต้อง? มันไม่ใช่แค่ตัวเลขสุ่มๆ หมายเลขบัตรเครดิตทุกหมายเลขปฏิบัติตามโครงสร้างเฉพาะและต้องผ่านการทดสอบการตรวจสอบทางคณิตศาสตร์

การทำความเข้าใจว่าบัตรเครดิตที่ถูกต้องทำงานอย่างไรนั้นมีความสำคัญสำหรับนักพัฒนาที่สร้างแอปพลิเคชัน e-commerce ผู้เชี่ยวชาญด้านความปลอดภัย และผู้บริโภคที่สนใจว่าข้อมูลทางการเงินของตนมีโครงสร้างอย่างไร

โครงสร้างของหมายเลขบัตรเครดิต

หมายเลขบัตรเครดิตทั่วไปเรียกทางเทคนิคว่า Primary Account Number (PAN) โดยปกติประกอบด้วยตัวเลข 13 ถึง 19 หลัก โดย 16 หลักเป็นความยาวที่พบบ่อยที่สุด (ใช้โดย Visa, Mastercard และ Discover)

หมายเลขแบ่งออกเป็นสามส่วนหลัก:

1. Major Industry Identifier (MII) และ Issuer Identification Number (IIN)

ตัวเลขหลักแรกของหมายเลขบัตรเครดิตคือ Major Industry Identifier (MII) ซึ่งระบุอุตสาหกรรมของผู้ออกบัตร:

  • 1 และ 2: สายการบิน
  • 3: การเดินทางและบันเทิง (เช่น American Express ขึ้นต้นด้วย 34 หรือ 37)
  • 4: การธนาคารและการเงิน (Visa)
  • 5: การธนาคารและการเงิน (Mastercard)
  • 6: การค้าและธนาคาร (Discover)
  • 7: ปิโตรเลียม
  • 8: โทรคมนาคม
  • 9: การกำหนดระดับชาติ

หกหลักแรก (รวมถึง MII) ประกอบเป็น Issuer Identification Number (IIN) ซึ่งในอดีตรู้จักกันในชื่อ Bank Identification Number (BIN) ส่วนนี้ระบุสถาบันเฉพาะที่ออกบัตร

2. Individual Account Identifier

ต่อจาก IIN ตัวเลขที่เหลือ ยกเว้นหลักสุดท้าย ประกอบเป็น individual account identifier ลำดับนี้ถูกกำหนดโดยธนาคารผู้ออกบัตรเพื่อระบุบัญชีของผู้ถือบัตรอย่างเฉพาะเจาะจง โดยมีความยาวได้ถึง 12 หลัก

3. หลัก Checksum

หลักสุดท้ายของหมายเลขบัตรเครดิตคือหลัก checksum ซึ่งคำนวณจากตัวเลขทั้งหมดที่นำหน้าโดยใช้สูตรเฉพาะที่เรียกว่า Luhn algorithm หลักนี้มีความสำคัญอย่างยิ่งสำหรับการตรวจสอบขั้นพื้นฐาน

วิธีการทำงานของ Luhn Algorithm

Luhn algorithm (หรือที่รู้จักกันในชื่อ "modulus 10" หรือ "mod 10" algorithm) เป็นสูตร checksum อย่างง่ายที่ใช้ตรวจสอบหมายเลขประจำตัวต่างๆ เช่น หมายเลขบัตรเครดิต หมายเลข IMEI และหมายเลข National Provider Identifier

ออกแบบมาเพื่อป้องกันข้อผิดพลาดที่เกิดขึ้นโดยบังเอิญ เช่น การพิมพ์หมายเลขผิดหรือการสลับตำแหน่งตัวเลขสองตัว มากกว่าการป้องกันการโจมตีที่เป็นอันตราย

นี่คือวิธีที่ algorithm ตรวจสอบหมายเลขบัตรเครดิต:

  1. เริ่มจากขวา: เริ่มจากหลักที่สองนับจากขวาและเลื่อนไปทางซ้าย คูณค่าของทุกหลักที่สลับกันด้วย 2
  2. จัดการตัวเลขสองหลัก: หากการคูณสองของหลักใดได้ผลลัพธ์มากกว่า 9 (เช่น 6 x 2 = 12) ให้นำหลักของผลคูณมาบวกกัน (เช่น 1 + 2 = 3)
  3. รวมตัวเลขทั้งหมด: บวกตัวเลขทั้งหมดเข้าด้วยกัน ทั้งที่ถูกคูณสอง (และอาจถูกลดค่า) และที่ไม่ได้ถูกเปลี่ยนแปลง (รวมถึงหลัก checksum สุดท้าย)
  4. ตรวจสอบผลรวม: หากผลรวมทั้งหมดเป็นทวีคูณของ 10 (กล่าวคือ ลงท้ายด้วย 0) หมายเลขบัตรเครดิตถือว่าถูกต้องในเชิงโครงสร้าง หากไม่เป็นเช่นนั้นถือว่าไม่ถูกต้อง

ตัวอย่างการตรวจสอบ

ลองทดสอบตัวเลขสมมติ: 49927398716

  1. คูณสองทุกหลักที่สลับกันนับจากขวา:
    • 1 -> 2
    • 8 -> 16 (1+6=7)
    • 3 -> 6
    • 2 -> 4
    • 9 -> 18 (1+8=9)
  2. ลำดับกลายเป็น: 4, 9, 9, 4, 7, 6, 9, 7, 7, 2, 6
  3. รวมตัวเลข: 4 + 9 + 9 + 4 + 7 + 6 + 9 + 7 + 7 + 2 + 6 = 70
  4. เนื่องจาก 70 modulo 10 เท่ากับ 0 หมายเลขนี้จึงถูกต้อง

เหตุใดการตรวจสอบจึงมีความสำคัญ

การตรวจสอบหมายเลขบัตรเครดิตก่อนประมวลผลธุรกรรมเป็นขั้นตอนแรกที่สำคัญในการประมวลผลการชำระเงิน

แม้การผ่านการตรวจสอบ Luhn จะพิสูจน์เพียงว่าหมายเลขนั้นถูกต้องในเชิงโครงสร้าง (ไม่ใช่ว่าบัญชีมีอยู่จริง มีเงินทุน หรือผู้ที่ใช้งานได้รับอนุญาต) แต่ก็สามารถตรวจจับการพิมพ์ผิดและข้อผิดพลาดในการจัดรูปแบบได้ทันที ซึ่งช่วยประหยัดเวลาและค่าธรรมเนียมการประมวลผลโดยป้องกันไม่ให้ข้อมูลที่ไม่ถูกต้องถูกส่งไปยัง payment gateway

หากคุณเป็นนักพัฒนา การนำการตรวจสอบฝั่ง client มาใช้ด้วย Luhn algorithm จะให้ข้อมูลตอบกลับทันทีแก่ผู้ใช้ ช่วยปรับปรุงประสบการณ์การชำระเงิน

ลองด้วยตัวเอง

ต้องการดูการตรวจสอบนี้ในการใช้งานจริงหรือทดสอบว่าหมายเลขบัตรเครดิตถูกต้องในเชิงโครงสร้างหรือไม่?

ลองใช้เครื่องมือ Credit Card Validator ฟรีของเรา เครื่องมือนี้ตรวจสอบความถูกต้องของหมายเลขบัตรที่ป้อนเข้าไปทันทีโดยใช้ Luhn algorithm และระบุเครือข่ายผู้ออกบัตรตาม IIN เป็นเครื่องมือที่มีประโยชน์สำหรับนักพัฒนาที่ทดสอบฟอร์มการชำระเงินและทุกคนที่อยากรู้ว่าหมายเลขบัตรของตนทำงานอย่างไร