CP140 – Số kiểm soát
Khi viết một dãy nhiều con số, thí dụ như 16 con số của thẻ tín dụng (Credit card), ta dễ phạm sai lầm. Sai lầm nầy có thể xảy ra trong nhiều trường hợp như:
• Viết sai con số, thí dụ giữa 1 và 7, …
• Chuyển sai vị trí các con số, thí dụ giữa 12 và 21, 45 và 54, …
• Sai do thiếu số trong các số đôi, số ba , thí dụ giữa 11 và 1, 222 và 22, …
• Sai do viết ngược các con số, thí dụ giữa 132 và 231, …
• Sai do các con số trùng nhau, thí dụ giữa 131 với 232, …
• Sai do âm điệu của số, thí dụ giữa 60 và 16 (sixty và sixteen)
Để giới hạn bớt những sai lầm có thể xảy ra, cũng như có thể kiểm soát sự hợp pháp của số cung cấp, các số quan trọng thường được viết với một con số thêm vào ở cuối, gọi là số kiểm soát hay số kiểm (Check digit). Số kiểm không phải luôn luôn khám phá được tất cả các sai sót. Những số đặc biệt quan trọng nhiều khi được viết với 2 số kiểm.
Có nhiều cách để tạo số kiểm cho một loại số tuỳ theo sự quan trọng của loại số đó và sự lựa chọn của người cung cấp.
Một phương pháp kiểm soát đơn giản nhất là cộng các con số của dãy số rồi chia cho 10 để có dư số (Modulo 10). Phương pháp nầy khám phá được những thiếu hay sai sót của các con số, nhưng không kiểm soát được các sai do hoán vị số.
Một phương pháp khác hơi phức tạp hơn là nhân mỗi con số với một hệ số tuỳ thuộc vị trí của số đó rồi cộng tất cả lại và chia cho 10 để có dư số. Phương pháp nầy có thể khám phá thêm được sai sót do sự hoán vị của các con số. Thí dụ: nếu các hệ số cho các con số kể từ trái là 5, 3, 2, 7 thì cách tạo số kiểm của số 4871 như sau:
(5 x 4) + (3 x 8) + (2 x 7) + (7 x 1) = 65
=> (Dư số khi chia cho 10) = 5 => Số kiểm soát = 5 => Số cung cấp = 48715
Các hệ số thường được chọn nhất là 1, 3, 7 và 9 vì các số nầy không có thừa số chung với 10. Để ý là số 5 không được chọn vì các số ứng với hệ số 5 có thể khác nhau – thí dụ 0, 2, 4, 6, 8 hay 1, 3, 5, 7, 9 – mà số kiểm soát vẫn như nhau.
Dùng hệ số khác nhau cho những số cận nhau giúp kiểm soát sai sót do các số hoán vị nhau.
Tuy nhiên, các hệ số cách nhau một số chẳn không khám phá được sai số do hoán vị nếu hai số hoán vị đó cách nhau bằng 5.
Thí dụ: Hệ số 3, 7 áp dụng cho 4, 9 => (3×4) + (7×9) = 75 => Số kiểm = 5
Hệ số 3, 7 áp dụng cho 9, 4 => (3×9) + (7×4) = 55 => Số kiểm = 5
Các phương pháp trên không áp dụng được cho các số đặc biệt quan trọng như số trên thẻ tín dụng của ngân hàng. Vài loại thẻ tín dụng thường gặp là:
Số trên thẻ tín dụng được kiểm chứng bằng thuật toán LUHN hay công thức LUHN, gồm những bước như sau:
Bước 0: Đánh số thứ tự các cột của số từ phải qua trái 1, 2, 3, 4, … Số ở cột 1 là số kiểm.
Bước 1: Gấp đôi các số ở các cột chẳn 2, 4, 6, …
Bước 2: Cộng tất cả các con số của các số đã gấp đôi ở bước 1 với tất cả các con số còn lại ở các cột lẻ (Kể cả số kiểm ở cột 1)
Bước 3: Chia tổng số của bước 2 cho 10 để có dư số (Modulo 10)
Nếu dư số nầy bằng 0 => số trên thẻ tín dụng được coi như hợp pháp.
Thuật toán LUHN được đề nghị bởi khoa học gia IBM Hans Peter Luhn, 1954, có mục đích để kiểm soát những sai lầm bất ngờ do tai nạn, không phải để khám phá những âm mưu có tính toán của bọn bất lương.
Các bước trên là để kiểm soát số trên thẻ tín dụng, đã có sẵn số kiểm ở cuối. Phương pháp tạo số kiểm từ một số tín dụng nào đó (thí dụ gồm 15 con số) cũng tương tự như trên. Trong thí dụ trên, nếu bỏ số cuối cùng thì tổng số trong bước 2 là 67.
Để có “Tổng số = 0 (modulo 10)”, ta chỉ cần thêm 3 vào số 67. Vậy 3 là số kiểm.