AIKhoaHoc.comAI Khoa Học
Công nghệ quanh ta

Mã QR hoạt động thế nào: ô vuông góc, sửa lỗi và vì sao mã rách vẫn quét được

Mã QR là dữ liệu viết bằng ô đen trắng, có sẵn phần dư để tự sửa lỗi. Hiểu cấu tạo để biết vì sao mã rách vẫn quét được và cách tránh bị lừa khi quét.

Customer holding a phone up to pay at a fruit stall in a Can Tho floating market, vendor boat nearby, both seen from behind, morning river light, no readable codes

Mã QR là một cách viết dữ liệu bằng những ô vuông đen trắng xếp thành lưới, để camera điện thoại đọc được từ mọi góc. Bên trong nó không chỉ có dữ liệu mà còn có những phần dư được tính toán sẵn, nhờ đó mã bị mờ, rách hay dính bẩn một phần vẫn đọc ra đúng.

Ở Việt Nam, mã QR có mặt khắp nơi: trên quầy rau ở chợ, hoá đơn tiền điện, vé xe, thực đơn quán cà phê. Ít ai để ý rằng trong mỗi ô mã là một bài toán khá đẹp về hình học, nhị phân và toán học sửa lỗi. Bài này giải thích cấu tạo của mã QR, cách điện thoại đọc nó, và vì sao hiểu cơ chế giúp bạn tránh được các kiểu lừa đảo mã dán đè đang được cảnh báo nhiều.

Từ mã vạch một chiều tới mã hai chiều

Trước mã QR, phổ biến nhất là mã vạch một chiều, những vạch đen dọc dài ngắn khác nhau trên bao bì hàng hoá. Máy quét đọc độ rộng của vạch và khoảng trắng theo một đường ngang, nên chỉ chứa được một dãy số ngắn, thường là mã sản phẩm. Muốn biết tên, giá, máy phải tra trong cơ sở dữ liệu của cửa hàng.

Mã QR là mã hai chiều: dữ liệu được ghi theo cả chiều ngang lẫn chiều dọc trên một lưới ô vuông. Nhờ vậy cùng diện tích chứa được nhiều hơn hẳn, đủ cho một đường dẫn trang web, một đoạn văn bản ngắn hay thông tin chuyển khoản. Tên QR viết tắt từ cụm tiếng Anh có nghĩa là “phản hồi nhanh”, vì mục tiêu ban đầu là đọc nhanh.

Mã QR được một công ty Nhật Bản phát triển vào năm 1994 để theo dõi linh kiện trong ngành sản xuất ô tô, rồi được chuẩn hoá quốc tế và để mở cho mọi người dùng. Chính việc để mở này giúp nó lan rộng: bất kỳ ai cũng có thể tạo và đọc mã QR mà không cần xin phép. Sự phổ biến thật sự tới khi điện thoại có camera tốt và ứng dụng quét được cài sẵn.

Giải phẫu một mã QR

Ba ô vuông lớn ở ba góc. Đây là dấu định vị. Mỗi dấu gồm các vòng đen trắng lồng nhau với tỉ lệ đặc biệt, hiếm khi xuất hiện ngẫu nhiên trong ảnh. Khi camera thấy ba dấu này, phần mềm biết ngay vị trí, kích thước và góc xoay của mã, kể cả khi bạn cầm máy nghiêng hay ngược.

Ô vuông nhỏ hơn gần góc thứ tư. Gọi là dấu căn chỉnh, có ở các mã từ cỡ trung trở lên. Nó giúp phần mềm sửa méo khi mã bị chụp xiên hoặc dán trên mặt cong như ly nhựa, chai nước.

Hai đường chấm đen trắng xen kẽ. Chạy giữa các dấu định vị, gọi là đường định thời. Chúng cho biết kích thước mỗi ô nhỏ, để phần mềm chia lưới cho đúng.

Dải thông tin định dạng. Nằm sát các dấu định vị, ghi lại mức sửa lỗi và kiểu “mặt nạ” đã dùng. Thông tin này được ghi hai lần ở hai chỗ khác nhau để phòng hỏng.

Phần còn lại là dữ liệu và mã sửa lỗi. Các ô đen trắng trong vùng này mã hoá từng bit, đi theo đường zíc zắc từ góc dưới bên phải lên. Ngoài dữ liệu gốc là các byte sửa lỗi được tính từ dữ liệu đó.

Viền trắng xung quanh. Gọi là vùng yên lặng, giúp tách mã khỏi hình nền. Mã in sát mép giấy hay sát hoạ tiết rối thường khó quét vì thiếu vùng này.

Bốn mức sửa lỗi: vì sao mã bị che một phần vẫn đọc được

Mã QR dùng phương pháp sửa lỗi Reed-Solomon, cũng là họ phương pháp dùng trên đĩa CD và trong truyền dữ liệu vệ tinh. Ý tưởng: thêm vào dữ liệu những byte dư được tính theo quy tắc toán học, để khi một phần dữ liệu bị hỏng, phần còn lại đủ để dựng lại. Người tạo mã chọn một trong bốn mức:

MứcKhôi phục được khoảngĐổi lạiHay dùng khi
LKhoảng 7% dữ liệu bị hỏngMã gọn nhấtMàn hình, nơi sạch sẽ
MKhoảng 15%Cân bằngPhần lớn mã in thông thường
QKhoảng 25%Mã dày ô hơnMôi trường dễ bẩn, nhà xưởng
HKhoảng 30%Mã dày ô nhấtMã có chèn biểu tượng ở giữa, mã ngoài trời

Đó là lý do nhiều mã QR có thể đặt một biểu tượng nhỏ ở giữa mà vẫn quét được: biểu tượng che mất một phần ô, nhưng mức sửa lỗi cao bù lại. Che quá nhiều, hoặc che đúng vào dấu định vị, thì mã hỏng. Đây là một ví dụ rất trực quan về toán học ứng dụng mà học sinh có thể tự thử: in một mã, dán giấy che dần từng phần, xem tới lúc nào thì không quét được nữa.

Mã QR chứa được bao nhiêu: vì sao có mã thưa, có mã dày đặc

Mã QR có bốn mươi cỡ, gọi là phiên bản. Phiên bản nhỏ nhất là lưới hai mươi mốt nhân hai mươi mốt ô, mỗi phiên bản tiếp theo thêm bốn ô mỗi chiều, tới phiên bản lớn nhất là một trăm bảy mươi bảy ô mỗi chiều. Phần mềm tạo mã tự chọn phiên bản nhỏ nhất đủ chứa dữ liệu với mức sửa lỗi đã chọn.

Vì vậy cùng là mã QR nhưng có mã thưa ô to, quét từ xa vẫn ăn, có mã dày đặc ô li ti, phải đưa điện thoại sát mới đọc được. Mã chứa một đường dẫn dài kèm nhiều tham số theo dõi sẽ dày hơn hẳn mã chứa một đường dẫn ngắn. Người làm biển quảng cáo ngoài trời hay in mã lên áo đồng phục nên giữ nội dung ngắn để mã thưa, dễ quét.

Mã QR còn có nhiều chế độ ghi dữ liệu: chế độ chỉ chứa chữ số gọn nhất, chế độ chữ cái in hoa và vài ký hiệu gọn vừa, chế độ byte dùng cho mọi ký tự, kể cả tiếng Việt có dấu, tốn chỗ nhất. Dữ liệu chuyển khoản theo chuẩn chung của các ngân hàng là một chuỗi gồm nhiều trường thông tin nối nhau theo quy ước, ứng dụng ngân hàng đọc chuỗi đó rồi điền sẵn số tài khoản, tên người nhận, số tiền.

Điện thoại đọc mã QR như thế nào

Khi bạn mở camera, phần mềm liên tục phân tích từng khung hình để tìm ba dấu định vị. Tìm được rồi, nó tính phép biến đổi hình học để “trải phẳng” mã về hình vuông chuẩn, kể cả khi mã nằm nghiêng trong ảnh. Sau đó nó chia lưới theo đường định thời và quyết định từng ô là đen hay trắng dựa trên độ sáng so với vùng xung quanh.

Có chuỗi bit rồi, phần mềm đọc thông tin định dạng, gỡ mặt nạ. Mặt nạ là một hoạ tiết được chồng lên lúc tạo mã để tránh những mảng đen hoặc trắng quá lớn gây khó đọc; gỡ mặt nạ là chồng lại cùng hoạ tiết đó để ra bit gốc. Tiếp theo là bước sửa lỗi: kiểm tra dữ liệu với các byte dư, phát hiện và sửa những byte sai. Cuối cùng mới giải mã thành chữ số, chữ cái hay đường dẫn.

Toàn bộ quá trình diễn ra trong chớp mắt. Nếu mã quá nhỏ trong khung hình, bị loá đèn, hoặc in trên giấy bóng phản chiếu, bước quyết định đen trắng dễ sai nhiều ô, vượt quá khả năng sửa lỗi. Lùi lại, nghiêng nhẹ để tránh loá, hoặc lau sạch màn hình điện thoại đang hiện mã thường giải quyết được.

Mã QR chuyển khoản và các kiểu lừa đảo cần biết

Mã QR chỉ là dữ liệu, nó không tự kiểm tra ai đã tạo ra mình. Hiểu điều này là hiểu vì sao các kiểu lừa sau đây có thể xảy ra:

  • Mã dán đè. Kẻ gian in mã của tài khoản khác rồi dán chồng lên mã của cửa hàng, quầy thu phí hay hộp gây quỹ. Người quét chuyển tiền vào sai tài khoản mà không biết.
  • Mã dẫn tới trang giả. Mã trên tờ rơi, bãi đỗ xe hay tin nhắn mở ra trang đăng nhập giả mạo ngân hàng, cơ quan nhà nước, đòi mật khẩu hay mã xác thực.
  • Mã yêu cầu cài ứng dụng lạ. Quét mã rồi được hướng dẫn tải một tệp cài đặt ngoài kho ứng dụng chính thức là dấu hiệu rất đáng ngờ.
  • Cách tự bảo vệ dựa trên cơ chế. Trước khi xác nhận chuyển khoản, đọc kỹ tên người nhận hiện trên ứng dụng ngân hàng, so với tên cửa hàng. Sờ thử xem mã có phải là lớp dán chồng không. Xem đường dẫn hiện ra trước khi mở, đặc biệt là tên miền.
  • Không quét mã từ nguồn không rõ để “nhận quà”, “nhận hoàn tiền” hay “xác minh tài khoản”. Ngân hàng và cơ quan nhà nước không đòi mật khẩu hay mã xác thực qua những đường như vậy.

Nếu nghi ngờ đã chuyển tiền nhầm do mã giả, liên hệ ngay ngân hàng qua kênh chính thức in trên thẻ hoặc trong ứng dụng, và báo cơ quan công an. Càng sớm càng có cơ hội xử lý.

Dùng AI để hiểu và tạo mã QR an toàn

Chatbot có thể giải thích cơ chế mã QR và giúp bạn kiểm một đường dẫn đáng ngờ, với vài lưu ý:

  1. Học cơ chế: “Giải thích cho học sinh lớp 9 vì sao mã QR bị che 20% vẫn quét được, dùng ví dụ đọc một câu bị nhoè vài chữ, rồi nói phần nào ví dụ này chưa chính xác.”
  2. Kiểm một đường dẫn: chép phần tên miền hiện ra sau khi quét (không bấm mở) và hỏi: “Tên miền này có dấu hiệu giả mạo không? Chỉ ra ký tự nào đáng ngờ.” AI có thể nhận ra kiểu thay chữ o bằng số 0, nhưng không thay được việc kiểm trên kênh chính thức.
  3. Tạo mã cho cửa hàng nhỏ: nếu bạn bán hàng, dùng chức năng tạo mã nhận tiền trong ứng dụng ngân hàng của chính mình thay vì trang tạo mã trôi nổi, và in kèm tên tài khoản bằng chữ to để khách đối chiếu.
  4. Đừng dán số tài khoản đầy đủ, ảnh chụp mã nhận tiền kèm số dư, hay ảnh chụp tin nhắn có mã xác thực vào chatbot. Mô tả tình huống bằng lời là đủ để hỏi.
  5. Với lớp học, nhờ AI gợi ý một hoạt động: học sinh tự tạo mã QR chứa một câu đố khoa học, dán quanh lớp để bạn khác quét và trả lời. Kiểm nội dung câu đố trước khi in.

Hiểu rằng mã QR chỉ là một “phong bì” chở dữ liệu giúp bạn bình tĩnh hơn: điều cần kiểm luôn là thứ bên trong phong bì, tức tên người nhận tiền hay tên miền trang web.

Câu hỏi thường gặp

Vì sao mã QR bị rách hay bẩn vẫn quét được?

Mã QR chứa thêm các byte sửa lỗi theo phương pháp Reed-Solomon. Tuỳ mức sửa lỗi khi tạo mã, phần mềm có thể dựng lại dữ liệu khi khoảng 7 tới 30 phần trăm bị hỏng, miễn là ba dấu định vị ở góc còn đọc được.

Ba ô vuông lớn ở góc mã QR dùng để làm gì?

Đó là dấu định vị, giúp phần mềm nhận ra có mã QR trong khung hình, xác định vị trí, kích thước và góc xoay. Nhờ chúng, bạn quét được mã từ nhiều góc, kể cả khi cầm điện thoại nghiêng hoặc lộn ngược.

Mã QR có chứa virus không?

Bản thân mã QR chỉ là dữ liệu như chữ hoặc đường dẫn, không tự chạy được. Nguy hiểm nằm ở nơi nó dẫn tới: trang web giả, tệp cài đặt lạ. Xem kỹ đường dẫn trước khi mở và không cài ứng dụng ngoài kho chính thức.

Làm sao nhận ra mã QR chuyển khoản bị dán đè?

Kiểm tên người nhận hiện trên ứng dụng ngân hàng trước khi xác nhận, so với tên cửa hàng. Sờ xem mã có lớp giấy dán chồng không. Cửa hàng cẩn thận thường in tên tài khoản bằng chữ bên cạnh mã để khách đối chiếu.

Mã QR và mã vạch khác nhau thế nào?

Mã vạch chỉ mã hoá dữ liệu theo một chiều nên chứa ít, thường là một dãy số sản phẩm. Mã QR ghi dữ liệu theo cả hai chiều nên chứa nhiều hơn hẳn, có cơ chế sửa lỗi và đọc được từ mọi góc.

Có nên tạo mã QR bằng trang web miễn phí không?

Với thông tin không quan trọng như đường dẫn bài học thì được, nhưng nên kiểm lại bằng cách quét thử. Với mã nhận tiền, hãy dùng chức năng tạo mã trong ứng dụng ngân hàng của chính bạn để tránh bị gắn nhầm hoặc gắn sai tài khoản.

Cần tư vấn cụ thể cho trường hợp của bạn?

Chúng tôi sẽ liên hệ trong vòng 24 giờ.

Đăng ký tư vấn ngay

Bài viết liên quan

Bạn cần hỗ trợ thêm?

Để lại thông tin, chúng tôi sẽ liên hệ trong 24 giờ.

hoặc
Gọi ngay 0926 138 138