Từ việc thanh toán không tiếpxúc tại các cửa hàng, kiểm tra thông tin sản phẩm đến việc xác thực danh tínhtrong các dịch vụ hành chính, mã QR đã chứng minh được sự ưu việt của mình.Trong
TÌM HIỂU VỀ QR CODE
Giới thiệu về QR code
QR code là viết tắt của từ Quick Response Code (Mã phản hồi nhanh) hay còn gọi là mã vạch ma trận (matrix-barcode) là dạng mã vạch hai chiều (2D) có thể được đọc bởi một máy đọc mã vạch hay smartphone có chức năng chụp ảnh với ứng dụng chuyên biệt để quét mã vạch.
Một mã QR có thể chứa đựng thông tin một địa chỉ web (URL), thời gian diễn ra một sự kiện, thông tin liên hệ, địa chỉ email, tin nhắn SMS, nội dung ký tự văn bản hay thông tin định vị Tuỳ thuộc thiết bị đọc mã QR dùng khi quét, nó sẽ dẫn tới một trang web, gọi đến một số điện thoại, xem một tin nhắn…
Mã QR cũng tương tự mã vạch truyền thống thường thấy trên các thùng hàng, các sản phẩm được người bán lẻ theo dõi quản lý kho hàng và sản phẩm trong kinh doanh Điểm khác nhau giữa mã QR và mã vạch truyền thống là lượng dữ liệu mà nó chứa đựng Các mã vạch truyền thống có các đường vạch thẳng dài một chiều và chỉ có thể lưu giữ 20 số chữ số, trong khi các mã QR hai chiều có thể lưu giữ thông tin hàng ngàn ký tự chữ số Mã QR nắm giữ nhiều thông tin hơn và tính chất dễ sử dụng. Ưu điểm lớn của QR code là khả năng nhanh chóng đọc và giải mã bởi các thiết bị di động, như điện thoại thông minh và máy tính bảng, mà không cần phải sử dụng thiết bị đặc biệt QR code đã trở thành một phương tiện hiệu quả để kết nối thế giới vật lý với thế giới số, mở ra nhiều ứng dụng trong việc chia sẻ thông tin, tiếp thị, thanh toán điện tử và nhiều lĩnh vực khác.
Tuy nhiên, cũng cần lưu ý rằng việc sử dụng QR code cũng đặt ra một số vấn đề về bảo mật và quyền riêng tư, vì nó có thể chứa liên kết đến trang web hay ứng dụng có thể chứa mã độc hoặc hướng dẫn lừa đảo Do đó, người dùng cần cẩn thận khi quét một QR code từ nguồn không tin cậy.
Dưới đây là khảo sát về độ tuổi thường xuyên sử dụng QR Code và mục đích sử dụng QR Code.
Hình 1 1 Khảo sát về độ tuổi thường xuyên sử dụng QR code
Hình 1 2 Khảo sát về mục đích sử dụng QR code
Nhìn một cách tổng quan, QR code đã trở thành một phần không thể thiếu của cuộc sống hiện đại, giúp tối ưu hóa quy trình và mang lại sự tiện ích trong nhiều lĩnh vực khác nhau.
Hình 1 3 Cấu trúc của QR code 1.1.2.1 Cell
Trong QR code có chứa nhiều ô hoa văn đen trắng, thực tế, các ô đen trắng này chứa các đoạn mã nhị phân Các ô (cell) trắng đen này lần lượt mang giá trị 0 và 1, tập hợp các cell chính là các thông tin được lưu trữ vào QR code.
1.1.2.2 Hoa văn định vị Ở bốn góc của QR code bố trí các ô vuông gọi là hoa văn định vị Nhờ vào hoa văn định vị này, camera có thể xác định được phạm vi QR code cũng như đọc được thông tin ngay cả trong trường hợp QR code bị biến dạng, nhờ đó có thể quét được QR code một cách nhanh chóng ở bất kỳ góc độ nào.
Các ô vuông đen trắng được đặt xen kẽ nhau nhằm giúp cho việc xác định toạ độ của QR code.
1.1.2.4 Alignment pattern Ở vùng phía dưới bên phải của QR code có một hình vuông chứa hình vuông nhỏ khác bên trong, hoa văn này có tác dụng quan trọng, giúp cho việc điều chỉnh lại những chênh lệch phát sinh do camera bị lệch trong quá trình quét.
1.1.2.5 Thông tin format (chức năng sửa chữa lỗi)
Xung quanh hoa văn định vị là phần chứa thông tin format, quyết định mức độ sửa chữa lỗi của QR code Ngoại trừ phần hoa văn định vị và thông tin format, các vùng khác của QR code là những vùng có thể thiết kế.
Bên cạnh đó, để giúp cho việc giữ cân bằng giữa các ô đen và trắng trênQR code, chức năng Mask được thiết lập Nhờ đó, không bao giờ thấy QR code chứa toàn các ô đen Dựa trên nguyên tắc, các thông tin lưu trong QR code được đảm bảo vẫn giữ toàn vẹn nhưng màu sắc của các ô đen trắng có thể đảo ngược để đảm bảo sự cân bằng.
Phân loại
QR code có 2 loại chính: động và tĩnh.
QR code động hay còn gọi là “QR code trực tiếp”: Sau khi được khởi tạo, liên kết chính của chúng có thể được chỉnh sửa mà không cần can thiệp vào code Khi được quét, code động sẽ chuyển hướng đến máy chủ, nơi lưu trữ thông tin cụ thể trong một cơ sở dữ liệu và được lập trình để tương tác cụ thể với hình ảnh được quét đó Code động tiện lợi hơn vì chúng được tạo ra áp dụng một lần và có thể thay đổi các thông tin được hiển thị khi đó được quét như các liên kết (domain, web) để hiển thị thông tin.
QR code tĩnh không giống như các code động, code tĩnh có thể lưu trữ các thông tin trực tiếp qua hình thức văn bản hoặc dẫn đến các trang web mà không cần chuyển hướng qua liên kết thứ cấp Điều này có nghĩa rằng các thông tin hoặc liên kết không thể thay đổi hoặc chỉnh sửa Code tĩnh rất lý tưởng cho những người muốn mã chứa thông tin của họ vĩnh viễn.
Cơ chế tạo và giải mã
Chuyển đổi dữ liệu thành bit: Dữ liệu ban đầu (văn bản, URL, số điện thoại, v.v.) được chuyển đổi thành một chuỗi bit thông qua các phương pháp mã hóa khác nhau (Numeric, Alphanumeric, Byte/Binary, hoặc Kanji).
Mã hoá lỗi: QR code sử dụng mã Reed-Solomon để thêm các bit kiểm tra lỗi vào dữ liệu Điều này giúp QR code có thể chịu được một mức độ hư hại nhất định mà vẫn giải mã được thông tin chính xác.
Sắp xếp dữ liệu: Chuỗi bit dữ liệu và bit kiểm tra lỗi được sắp xếp vào một cấu trúc ma trận vuông Các module (ô vuông nhỏ) trong ma trận được tô đen hoặc để trắng dựa trên giá trị bit.
Thêm các mẫu định vị và thời gian: QR code bao gồm các mẫu định vị ở các góc và các mẫu thời gian dọc theo các cạnh để hỗ trợ việc định vị và căn chỉnh khi quét.
Quét và chụp ảnh: Một thiết bị (thường là smartphone hoặc máy quét QR code) chụp ảnh QR code.
Xử lý ảnh: Phần mềm giải mã QR code xử lý ảnh để xác định các module đen và trắng, xác định các mẫu định vị và thời gian để căn chỉnh và định vị chính xác mã QR trong ảnh.
Phân tích ma trận: Dựa vào vị trí và mẫu các module, phần mềm sẽ trích xuất chuỗi bit từ ma trận.
Kiểm tra lỗi và sửa lỗi: Chuỗi bit này sau đó được kiểm tra và sửa lỗi bằng cách sử dụng các bit kiểm tra lỗi đã được thêm vào trong quá trình mã hóa.
Giải mã dữ liệu: Chuỗi bit đã được kiểm tra và sửa lỗi sẽ được chuyển đổi ngược lại thành dữ liệu ban đầu (văn bản, URL, số điện thoại, v.v.) dựa trên phương pháp mã hóa ban đầu.
Ưu điểm và nhược điểm
Mã QR dễ tạo và sử dụng Người dùng chỉ cần một ứng dụng quét mã QR trên điện thoại để đọc mã.
Mã QR có thể lưu trữ nhiều loại thông tin khác nhau như URL, văn bản, email, số điện thoại, vị trí GPS… Khả năng lưu trữ dữ liệu lớn hơn so với mã vạch truyền thống.
Mã vạch QR có khả năng mã hoá nhiều thông tin, giải mã nhanh, khả năng sửa lỗi cao (có thể đọc được mã bị mờ hoặc mất đi một phần).
QR code đòi hỏi phải có phần mềm đọc mã trên điện thoại.
QR code có thể dẫn người dùng đến các trang web độc hại hoặc lừa đảo nếu không được kiểm tra cẩn thận.
Mã QR không phù hợp với tất cả môi trường như nơi có ánh sáng yếu hoặc không có internet để truy cập thông tin trực tuyến sau khi quét mã.
Ứng dụng của QR code
Mã QR code đã trở thành một công cụ quan trọng trong lĩnh vực thanh toán điện tử nhờ vào sự tiện lợi và tốc độ xử lý nhanh chóng Các ứng dụng bao gồm:
Thanh toán qua di động: Người dùng có thể quét mã QR code tại điểm bán hàng để thực hiện thanh toán mà không cần sử dụng tiền mặt hoặc thẻ tín dụng.
Giao dịch ngân hàng: Một số ngân hàng cung cấp tính năng quét mã QR code để chuyển tiền nhanh chóng giữa các tài khoản mà không cần nhập số tài khoản hoặc thông tin chi tiết.
Hoá đơn và biên lai: Mã QR code có thể được in trên hoá đơn để người dùng quét và thanh toán trực tiếp qua ứng dụng ngân hàng hoặc ví điện tử.
Mã QR code cung cấp một phương thức hiệu quả để theo dõi và quản lý hàng hoá từ khi sản xuất đến tay người tiêu dùng.
Theo dõi sản phẩm: Mã QR code được gắn vào sản phẩm giúp theo dõi quá trình sản xuất, lưu kho và vận chuyển Mỗi mã QR chứa thông tin chi tiết về sản phẩm như nguồn gốc, ngày sản xuất và lô hàng.
Quản lý tồn kho: Sử dụng mã QR code trong kho hàng giúp quản lý số lượng hàng tồn kho một cách chính xác và nhanh chóng, giảm thiểu lỗi nhập dữ liệu thủ công.
Truy xuất nguồn gốc: Người tiêu dùng có thể quét mã QR trên sản phẩm để biết thông tin chi tiết về nguồn gốc, quy trình sản xuất và các chứng nhận chất lượng.
QR code đã trở thành một công cụ mạnh mẽ trong lĩnh vực marketing và quảng cáo, giúp doanh nghiệp kết nối trực tiếp với khách hàng.
Quảng cáo sản phẩm: Mã QR code trên các ấn phẩm quảng cáo, poster và bảng hiệu giúp khách hàng truy cập ngay lập tức vào trang web sản phẩm, video giới thiệu hoặc thông tin chi tiết khác.
Khuyến mãi và giảm giá: Các chương trình khuyến mãi có thể sử dụng mã QR code để khách hàng quét và nhận phiếu giảm giá hoặc tham gia các chương trình ưu đãi đặc biệt.
Tương tác khách hàng: Mã QR code có thể liên kết đến các khảo sát, đánh giá sản phẩm hoặc trang mạng xã hội tạo ra cơ hội tương tác và thu thập phản hồi từ khách hàng.
Quản lý hồ sơ bệnh nhận: Có thể sử dụng để lưu trữ và truy xuất nhanh thông tin bệnh nhân, lịch sử điều trị và đơn thuốc giúp các bác sĩ và y tá truy cập thông tin một cách nhanh chóng và chính xác.
Kiểm soát dược phẩm: Mã QR code trên bao bì thuốc giúp kiểm soát xuất xứ, hạn sử dụng và hướng dẫn sử dụng đảm bảo an toàn cho người dùng.
Tài liệu học tập: Trong giáo dục, mã QR code có thể được in trên sách giáo khoa, tài liệu học tập để học sinh, sinh viên quét và truy cập các nội dung bổ sung, video hướng dẫn hoặc bài tập thực hành.
Thẻ sinh viên và học viên: Mã QR code trên thẻ sinh viên giúp quản lý thông tin cá nhân, điểm danh và truy cập các dịch vụ trong trường học.
QR CODE TRONG DỊCH VỤ CHUYỂN NHANH NAPAS247
QR động đến tài khoản
2.4.1 Các mã ngân hàng tại Việt Nam https://www.sbv.gov.vn/webcenter/portal/en/home/sbv/paytreasury/bankidno? centerWidth%25&leftWidth %25&rightWidth=0%25&showFooterse
&showHeaderse&_adf.ctrl- state=dz1di3qvb_4&_afrLoopT432337802419466#%40%3F_afrLoop
%26showHeader%3Dfalse%26_adf.ctrl-state%3D1di83tmkaa_4
2.4.2 Phiên bản dữ liệu (ID 00)
Ý nghĩa: Phiên bản dữ liệu là đối tượng dữ liệu đầu tiên trong mã QR, dùng để xác định phiên bản mã QR và các quy ước về ID, độ dài, giá trị.
Phiên bản dữ liệu có giá trị là “01”.
Các giá trị khác được đăng ký dự phòng.
2.4.3 Phương thức khởi tạo (ID 01)
Ý nghĩa: Phương thức khởi tạo xác định công nghệ giao tiếp và phân biệt dữ liệu là động hay tĩnh.
- “11” = QR tĩnh – áp dụng khi mã QR cho phép thực hiện nhiều lần giao dịch.
- “12” = QR động – áp dụng khi mã QR chỉ cho phép thực hiện một lần giao dịch.
2.4.4 Thông tin định danh người thụ hưởng a Giá trị định danh - ID: 00
- Độ dài: 10 (là độ dài của A000000727) - Giá trị: 0010A000000727 b Tổ chức (người thụ hưởng) - ID: 01
- Độ dài: 30 (của toàn bộ subtab) - Giá trị: (bao gồm toàn bộ subtab) o Subtab 1 ID: 00 o Subtab 1 Độ dài: 06 (độ dài của Subtab 1 Giá trị) – Thông tin mã ngân hàng o Subtab 1 Giá trị: 970403 o Subtab 2 ID: 01 o Subtab 2 Độ dài: 16 (độ dài của Subtab 2 Giá trị) – Thông tin số tài khoản thụ hưởng o Subtab 2 Giá trị: 2112995044604025 Final: 000697040301162112995044604025
2.4.8 Thông tin bổ sung (Không có kí tự đặc biệt)
Độ dài: tối đa 99 ký tự
Hiển thị: Không bắt buộc
Ý nghĩa: Trường Thông tin bổ sung cung cấp các dữ liệu bổ sung hỗ trợ trong các trường hợp khác nhau và bao gồm ít nhất 1 đối tượng dữ liệu.
Nếu xuất hiện, trường Thông tin bổ sung (ID 62) sẽ bao gồm ít nhất một đối tượng dữ liệu và tổng độ dài của tất cả các đối tượng dữ liệu trong ID 62 không vượt quá 99 ký tự.
- Nội dung của giá trị đối tượng cho các ID từ “01” đến “08” có thể là “***” hoặc là một giá trị do ĐVCNTT quy định Nếu nội dung là "***" thì khách hàng sẽ nhập thông tin vào ứng dụng di động.
- Yêu cầu thông tin khách hàng bổ sung (ID “09”) bao gồm bất kỳ sự kết hợp nào của các ký tự: “A”, “M” và/hoặc “E”, và sẽ chỉ có một giá trị duy nhất cho mỗi ký tự này.
- Nếu Hệ thống thanh toán cụ thể (ID 50-99) xuất hiện thì nó sẽ bao gồm GUID cơ bản (ID 00) với một trong các giá trị sau:
• Một AID bao gồm một mã RID quy định theo ISO/IEC 7816-5, và có thể bao gồm một mã PIX theo ISO 7816-4.
• Một UUID không có dấu (-) ngăn cách.
VD:“vn.com.napas.qrcodeservice”.
Ý nghĩa: CRC - Checksum được tính theo ISO/IEC 13239 bằng cách sử dụng đa thức '1021' (hex) và giá trị ban đầu 'FFFF' (hex) Checksum được tính cho tất cả các đối tượng dữ liệu, bao gồm ID, Độ dài và Giá trị nằm trong mã QR theo đúng thứ tự xuất hiện, ngoài ra bao gồm cả ID và Chiều dài của CRC (nhưng không bao gồm Giá trị của CRC).
Mã hoã sửa lỗi
Mã QR sử dụng tính năng sửa lỗi Reed-Solomon Quá trình này tạo ra các từ mã sửa lỗi (byte) dựa trên dữ liệu được mã hoá Trình đọc mã QR có thể sử dụng các byte sửa lỗi này để xác định xem nó có đọc dữ liệu chính xác hay không và từ mã sửa lỗi có thể được sử dụng để sửa các lỗi đó.
Có 4 cấp độ sửa lỗi: L, M, Q, H
Hình 2 1 Mức độ sửa lỗi
Lưu ý: Mức độ sửa lỗi càng cao thì yêu cầu nhiều byte hơn, do đó mức độ sửa lỗi càng cao thì mã QR sẽ càng lớn.
Thuật toán Reed-Solomon đóng một vai trò quan trọng trong việc tạo mã QR nhờ khả năng phát hiện và sửa lỗi Mã QR có thể dễ dàng bị hỏng hoặc bị biến dạng trong quá trình in hoặc quét, dẫn đến dữ liệu bị thiếu hoặc không chính xác Khả năng sửa lỗi do thuật toán Reed-Solomon cung cấp cho phép mã QR vẫn có thể đọc được ngay cả khi một phần mã bị hỏng.
Mức độ khả năng sửa lỗi trong mã QR phụ thuộc vào số lượng từ mã sửa lỗi được thêm vào trong quá trình mã hóa Mức độ sửa lỗi cao hơn có thể chịu được nhiều lỗi hơn nhưng yêu cầu số lượng từ mã lớn hơn, điều này làm tăng kích thước tổng thể của mã QR.
Bằng cách sử dụng thuật toán Reed-Solomon, trình tạo mã QR có thể đạt được sự cân bằng giữa lượng dữ liệu được lưu trữ và mức độ sửa lỗi cần thiết.
Tính linh hoạt này làm cho mã QR phù hợp với nhiều ứng dụng, từ lưu trữ URL và thông tin liên hệ đến mã hóa chi tiết sản phẩm và quản lý hàng tồn kho.
VD: Cách hoạt động của thuật toán Reed-Solomon
Giả sử A muốn truyền dữ liệu tới B một dãy số là 2, 4, 3, 1 Nhưng trong quá trình truyền dữ liệu gặp vấn đề về đường truyền và bên B chỉ nhận được gói tin là 2, 4, 1 và mất gói tin 3 Thuật toán Reed-Solomon sẽ giúp giải quyết vẫn đề này.
Hình 2 2 Minh hoạ về thuật toán Reed-Solomon
Thuật toán Reed-Solomon sẽ thêm k gói bổ sung và sẽ dựa vào đó để khôi phục dữ liệu Thực hiện gán 6 gói lần lượt từ m1 đến m6.Giả sử k = 2, chúng ta sẽ tìm số nguyên tố p > mi Trong trường hợp này p > 4 và p là số nguyên tố => p = 5
Hình 2 3 Minh hoạ về thuật toán Reed-Solomon
Thực hiện tìm đa thức nội suy (Hàm Lagrange): f(x) = 2x 3 + 2 mod 5
Hình 2 4 Minh hoạ về thuật toán Reed-Solomon
Bây giờ nếu trong quá trình truyền dữ liệu, gói 2 bị mất, ta sẽ sử dụng hàm f(x) để suy ngược lại gói đã mất: f(0) = 2.0 3 + 2 mod 5 = 2 mod 5 Và ta thấy f(5) = 2 mod 5 => Gói bổ sung là gói 5 Khi này dữ liệu truyền đi sẽ được khôi phục lại.
XÂY DỰNG CHƯƠNG TRÌNH THỬ NGHIỆM
Môi trường triển khai
Hình 3 1 Cấu trúc thư mục
Hình 3 2 Một số các thông tin quy định
Hình 3 3 Thông tin mã BIN của một số ngân hàng trong file bin_code.py
Triển khai các hàm chức năng
Các tham số đầu vào cần lưu ý:
trans_amount: Số tiền của lần giao dịch
purpose_of_transaction: Nội dung mà người chuyển khoản muốn ghi chú
bank_account: Thông tin tài khoản ngân hàng của người thụ hưởng
Hình 3 4 Code file main.py 3.2.2 Các hàm hỗ trợ
- Sử dụng thư viện qrcode và PIL trong PyPI của Python.
- Thư viện qrcode có nhiệm vụ tạo ra mã qrcode dựa và đoạn mã đầu vào.
- PIL có nhiệm vụ lưu lại ảnh QR Code sau khi đã tạo.
Hình 3 5 Code file qr_code.py
Hình 3 6 Code file crc.py
- File helper.py sẽ chứa những hàm con để tạo ra các thành phần cấu tạo nên 1 mã QR Code trong giao dịch ngân hàng Ví dụ như: Các hàm chuẩn bị dữ liệu cho phương thức khởi tạo, hàm xác định thông tin định danh người thụ hưởng,mã tiền tệ, số tiền giao dịch, mã quốc gia, mục đích giao dịch,…
Hình 3 7 Code file helper.py
Kết quả
Hình 3 8 QR Code sau khi chạy chương trình
Qua quá trình tìm hiểu và nghiên cứu về mã QR cũng như việc xây dựng chương trình mô phỏng quá trình sử dụng mã QR trong giao dịch, có thể nhận thấy rằng mã QR thực sự là một công cụ đa năng và tiện lợi trong nhiều lĩnh vực của đời sống hiện đại Khả năng mã hóa thông tin linh hoạt, tốc độ truy xuất nhanh và tính bảo mật cao đã giúp mã QR trở thành một phần không thể thiếu trong các hoạt động kinh tế, giáo dục, y tế và nhiều lĩnh vực khác.
Chương trình mô phỏng đã giúp chúng ta hiểu rõ hơn về cơ chế hoạt động, cách thức tạo và quét mã QR, từ đó thấy được sự đơn giản và hiệu quả mà công nghệ này mang lại Không chỉ dừng lại ở việc thanh toán không tiếp xúc, mã QR còn mở ra nhiều ứng dụng tiềm năng trong việc quản lý thông tin, xác thực danh tính và kết nối nhanh chóng giữa người dùng với các dịch vụ số.
Kết quả từ nghiên cứu này cũng cho thấy, việc áp dụng mã QR vào thực tế không đòi hỏi quá nhiều chi phí và công nghệ phức tạp, mà ngược lại, rất dễ triển khai và sử dụng Điều này mở ra nhiều cơ hội cho các doanh nghiệp và tổ chức trong việc nâng cao hiệu quả hoạt động và cải thiện trải nghiệm người dùng.
Tuy nhiên, để mã QR phát huy tối đa tiềm năng của mình, chúng ta cần tiếp tục nghiên cứu và phát triển các giải pháp bảo mật, tối ưu hóa quy trình quét và tích hợp mã QR vào các hệ thống thông tin hiện có Đồng thời, việc nâng cao nhận thức và đào tạo kỹ năng sử dụng mã QR cho người dùng cũng là một yếu tố quan trọng để đảm bảo sự thành công của công nghệ này.
Tóm lại, nghiên cứu về mã QR và chương trình mô phỏng sử dụng mã QR trong giao dịch đã đem lại nhiều kết quả đáng khích lệ, khẳng định vị trí và vai trò của mã QR trong kỷ nguyên số Với những kiến thức và kinh nghiệm thu được từ đề tài này sẽ là nền tảng vững chắc cho những bước phát triển tiếp theo,góp phần vào sự tiến bộ của công nghệ và đời sống xã hội.