Thuật toán vui: làm sao mà anh chị em ta biết thẻ tín dụng nhập đúng hay sai?

07/10/2025 08:45
Thuật toán vui: làm sao biết thẻ tín dụng nhập đúng hay sai mà không cần liên lạc nhà bank
Hiện nay, thẻ tín dụng giờ đã trở thành một vật dụng quen thuộc với hầu hết mọi người. Mỗi lần cần thanh toán online, anh em chỉ cần gõ dãy số in trên thẻ, điền CCV, sau đó có thể nhập OTP là hoàn thành giao dịch. Tuy nhiên, đã bao giờ anh em thắc mắc những con số trên thẻ có ý nghĩa gì không Liệu có quy tắc nào để tạo ra chúng, và tại sao hệ thống thanh toán có thể phát hiện ra lỗi gõ sai ngay lập tức mà không cần gửi yêu cầu kiểm tra về ngân hàng?
credti-card.jpg
Thẻ tín dụng đã trở thành một phần quan trọng trong cuộc sống của loài người

Trên thực tế, có một quy tắc toán học đơn giản là thuật toán Luhn để kiểm tra số thẻ tín dụng. Mà không chỉ thế, nhiều mã số khác trong cuộc sống cũng được kiểm tra bằng toán học, ví dụ như mã vạch sản phẩm, số theo dõi bưu kiện, số tài khoản ngân hàng hoặc ISBN sách đều dùng các thuật toán kiểm tra tính hợp lệ tương tự Luhn để phát hiện lỗi nhập liệu.

Thoạt nhìn, dãy số trên thẻ tín dụng chỉ như một chuỗi ký tự ngẫu nhiên. Nhưng thực tế, chúng được sắp xếp có cấu trúc rõ ràng. Chữ số đầu tiên của thẻ cho anh em biết loại tổ chức phát hành (Major Industry Identifier). Ví dụ như thẻ Visa luôn bắt đầu bằng số 4, thẻ MasterCard thì thường bắt đầu bằng số 5, và thẻ Discover luôn mở đầu bằng số 6.


credit-card-structure.jpeg
Cấu trúc thẻ tín dụng. Ví dụ thẻ này, bỏ số check digit đi sẽ còn 4024 6072 3695 074

Năm đến bảy chữ số tiếp theo xác định ngân hàng hoặc tổ chức tài chính phát hành thẻ (Issuer Identifier). Sau đó là phần dành cho số tài khoản cá nhân của bạn trong ngân hàng đó. Và quan trọng nhất: con số cuối cùng, gọi là “check digit”, không liên quan gì đến tài khoản hay ngân hàng, mà được thêm vào chỉ để phục vụ cho một bài toán kiểm tra tính hợp lệ thông qua thuật toán Luhn.

Về mặt kỹ thuật, các tổ chức phát hành sẽ chọn số tài khoản cá nhân trước, rồi dùng thuật toán Luhn tính toán ra số “check digit” sao cho cả dãy số thỏa mãn điều kiện toán học kiểm tra, chứ không phải lấy ngẫu nhiên như chúng ta lầm tưởng.

Như vậy, việc check digit được tạo ra dựa trên thuật toán Luhn. Thuật toán này do nhà nghiên cứu Hans Peter Luhn của IBM phát minh và đăng ký bằng sáng chế vào năm 1960. Thuật toán này vô cùng đơn giản nhưng hiệu quả. Nguyên lý như sau:

  • Bỏ qua chữ số cuối cùng, lấy toàn bộ dãy số còn lại.
  • Bắt đầu từ phải sang trái, nhân đôi mỗi chữ số ở vị trí cách một.
  • Nếu phép nhân đôi cho ra số có hai chữ số, cộng gộp các chữ số đó lại (ví dụ 7 x 2 = 14 thì tính 1 + 4 = 5).

  • Cộng tất cả lại với check digit. Nếu tổng chia hết cho 10, số thẻ hợp lệ; nếu không, hệ thống sẽ báo lỗi.
luhn-algorithm-graphic-d2-TEXT.jpeg
Như trong hình này, với số thẻ ví dụ ở trên, anh em bỏ số cuối cùng (check digit ra). Sau đó từ phải qua trái, bắt đầu từ số 4, cứ cách 1 số thì sẽ nhân hai. Rồi tính tổng lại tất cả lại. Nếu phép nhân cho ra kết quả là 18, anh em lấy 1 + 8

Mình đã thử với mấy thẻ tín dụng của mình và thấy là tổng đều chia hết cho 10. Điểm thú vị mà anh em có thể thấy được là giải thuật này chỉ bao gồm các phép tính cơ bản như nhân và cộng. Vì thế, nó được tích hợp sẵn trong phần mềm xử lý giao dịch mà không cần gọi qua bên thứ ba. Điều này giúp tiết kiệm thời gian và chi phí cho doanh nghiệp.

Cơ chế này giúp phát hiện hầu hết lỗi thường gặp khi nhập số thẻ: gõ nhầm một con số hoặc hoán đổi hai con số liền kề. Chẳng hạn, nếu bạn nhập 6 thành 5, tổng sẽ thay đổi và lập tức không còn chia hết cho 10. Tuy nhiên, có một ngoại lệ duy nhất là khi đổi chỗ 0 và 9: tức 09 đổi thành 90), tổng vẫn giữ nguyên.

QUẢNG CÁO


Theo nghiên cứu của nhà toán học Jacobus Verhoeff, 90% lỗi nhập số thực tế là nhầm một số hoặc hoán đổi hai số cạnh nhau. Thuật toán Luhn bắt được gần hết các trường hợp này ngoại trừ 09/90.
Để khắc phục, nhà toán học Jacobus Verhoeff năm 1969 đã phát triển một thuật toán phức tạp hơn, có thể phát hiện cả trường hợp 09/90 cùng nhiều lỗi tinh vi khác. Dù vậy, Verhoeff không phổ biến vì độ phức tạp cao, trong khi Luhn đã quá đơn giản và đủ tốt cho thực tế.


Mỗi lần anh em thanh toán, dữ liệu thẻ cuối cùng vẫn được gửi đến hệ thống xác thực của ngân hàng. Nhưng nếu mọi lỗi gõ nhầm đơn giản cũng phải qua bước xác thực này, giao dịch sẽ tốn thêm thời gian và doanh nghiệp phải trả thêm phí xử lý. Luhn đóng vai trò như lớp xác thực đầu tiên khi chỉ cần vài phép tính cơ bản, hệ thống thanh toán tại chỗ đã loại bỏ được gần 90% lỗi nhập liệu. Nhờ đó, người dùng không mất công chờ đợi, còn doanh nghiệp thì tiết kiệm chi phí.

Tuy nhiên, một điểm lưu ý là thuật toán Luhn chỉ loại bỏ số thẻ không hợp lệ thôi. Vãn còn tồn tại trường hợp có số giả mạo vượt qua lớp kiểm tra của thuật toán này. Khi đó, các bước xác thực kiên cố hơn sẽ được thực hiện phía sau bởi hệ thống ngân hàng để xử lý gian lận hoặc lỗi phức tạp hơn.

Điểm mạnh của Luhn là đơn giản, nhưng nó cũng có giới hạn. Như đã nói, nếu đổi chỗ 0 và 9 thì thuật toán không phát hiện được. Về mặt toán học, việc hoán đổi hai chữ số liền kề thường làm thay đổi tổng kiểm tra (ví dụ cặp số 3 và 1 khi đảo chỗ sẽ khiến tổng khác đi 2 đơn vị), do đó chắc chắn không còn chia hết cho 10. Nhưng riêng trường hợp 0 và 9 thì tổng lại giữ nguyên, dẫn đến “khe hở” duy nhất này.

Lần tới khi bạn thấy thông báo “số thẻ không hợp lệ” hiện lên, hãy nhớ rằng có một “mánh toán học” nho nhỏ đang âm thầm hoạt động phía sau. Thuật toán Luhn – dù ra đời từ thập niên 1960 – đến nay vẫn là công cụ đắc lực, giúp bảo vệ người dùng và tiết kiệm chi phí cho doanh nghiệp. Một minh chứng rõ ràng rằng đôi khi, giải pháp đơn giản lại chính là giải pháp bền vững nhất.

Tin xem thêm

Lenovo ra mắt màn hình chơi game Legion mới với tần số quét 320Hz

Chuyên mục UH Plus
20/10/2026 11:04

MXH mygo - Lenovo ra mắt màn hình chơi game Legion mới với mức giá phải chăng cùng tần số quét 320Hz

Apple lần đầu tiên tiết lộ dung lượng pin của iPhone

Chuyên mục UH Plus
19/10/2026 10:00

MXH mygo - Apple tiết lộ dung lượng pin của iPhone Duo

"Apple đã mắc 'sai lầm lớn' với hoạt động đặt trước bộ đôi iPhone"

Chuyên mục UH Plus
19/10/2026 09:50

MXH mygo - Mark Gurman vừa đưa ra nhận xét: Apple đã mắc ’sai lầm lớn’ với hoạt động đặt trước bộ đôi iPhone

Claude, trí tuệ nhân tạo của Anthropic, đã giải quyết được một bí ẩn mật mã học tồn tại suốt 25 năm qua

Chuyên mục UH Plus
18/10/2026 09:46

MXH mygo - Claude của Anthropic giải mã một bí ẩn mật mã học 25 năm tuổi của NSA trong chưa đầy 30 phút

Samsung có thể cắt giảm 30% sản lượng điện thoại trong năm nay

Chuyên mục UH Plus
18/10/2026 09:38

MXH mygo - Samsung có thể cắt giảm 30% sản lượng điện thoại trong năm nay khi biên lợi nhuận dần biến mất.

Thế lực mới ngành sữa: Ả Rập Xê Út mang ngành chăn nuôi bò sữa đến giữa sa mạc

Chuyên mục UH Plus
17/10/2026 23:57

MXH mygo - Ngành công nghiệp sữa của Ả Rập Xê Út đang phát triển mạnh mẽ, nhưng liệu nó có bền vững không?

Anthropic cảnh báo các mô hình AI nhỏ có thể tự sao chép thông qua các thiết bị IoT

Chuyên mục UH Plus
17/10/2026 23:34

MXH mygo - Những “bộ sao chép dựa trên trọng số” (small weight-based replicators) này có thể mở đường cho một thế hệ sâu máy tính mới.

Kính AR XREAL 1 Pro+ nâng độ sáng lên 1.200 nit với giá 599 USD

Chuyên mục UH Plus
16/10/2026 10:38

MXH mygo - Phiên bản mới có giá 599 USD này được trang bị hệ thống quang học Micro-OLED với độ sáng 1.200 nit cùng khả năng hiển thị chiều sâu 3D ở tần số 60Hz; bản cập n...

Asus ra mắt đối thủ mới của MacBook Air

Chuyên mục UH Plus
16/10/2026 10:23

MXH mygo - Asus ra mắt đối thủ mới của MacBook Air với thiết kế kim loại, RAM 16 GB và màn hình OLED 120 Hz