หลักการในการคำนวนเลขบัตรประจำตัวประชาชน
คุึณเคยลองสังเกตดูไหมว่าทำไมในการกรอกเลขประำตัวประชาชนนั้นบางเว็บมันถึงได้ร
ู้ว่าอันไหนของ
จริงอันไหนของปลอม มันมีฐานข้อมูลของคนทั้งประเทศอยู่หรือ! ไม่ใช่หรอกครับเว็บเขาแค
่มีการคำนวนเท่า
นั้นเอง ส่วนหลักการคำนวนนั้นไม่ได้ซับซ้อนเลยมาูดูุเองดีกว่า
1111111111119
อันนี้ก็เป็นของจริง (ของใครก็ไม่รู้)ตัวเลข12ตัวแรกจะบอกถึงภูมิลำเนาของเจ้าของว่าอยู่ไหนเป็นคน
จังหวัดอะไรอย่างนั้นส่วนตัวเลขตัวที่ 13 นั้นจะเป็นตัว Check ว่ารหัสนั้นเป็นของจริงหรือ
เปล่า เราลองมาดูการ
คำนวนกันดีกว่า
1.มั่วตัวเลข 12 ตัวขึ้นมาแล้วแยกหลักซะ
1 2 1 3 1 4 1 5 1 6 1 7
2.คูณเข้าไปด้วยค่าประจำหลักของตัวเลขนั้นๆ
(1x13) (2x12) (1x1
1) (3x10) (1x9) (4x8) (1x7) (5x6) (1x5) (6x4) (1x3) (7x2)
3.จะได้ตัวเลขต่อไปนี้
13 24 11 30 9 32 7
30 5 24 3 14
4.เอาตัวเลขมาบวกกันทั้งหมด
13+24+11+30+9+32+7+30+5+24+3+14= 202
5.เอาตัวเลขที่หามาได้หารด้วย11
202/11 = 4
6.ตัวเลขที่ออกมาก็คือ
1213141516174
แค่นี้เหละหลักการคำนวนง่ายๆที่ไม่ซับซ้อนอะไรเลยถ้าเกิดว่าใครขี้เกียจมานั่งคิดให้เลยเวลาก็ไปโหลด
โปรแกรมคำนวนเลขบัตรประจำำตัวประชาชนมาลองใช้ก็ไๆด้สะดวกดีที่ http://viruscom.freeforums.org
ผมคิดว่าหลายๆ คนคงมีคำถามในใจแล้วหละว่า ทำไมต้องเอามาคูณ 13 ทำไมต้องเอามา บวกกัน ทำไม
ต้องเอามา mod 11 คำตอบที่ผมให้ได้ก็คือ มันคือวิธีที่ถูกเลือกใช้ในการคำนวณ Check Digit ให้กับ
รหัสประชาชนครับ แต่ถ้าเราจะคำนวณ Check Digit ให้กับรหัสสินค้า หรือ ISBN ของหนังสือ เราก็ต้อง
ใช้วิธีการคำนวณ ที่แตกต่างกันออกไปครับ
ในเมื่อรู้วิธีแล้ว เรามาเขียนโปรแกรมตรวจสอบกันดีกว่า
ผมเขียนไว้ให้หลายภาษาเหมือนกัน ให้เพื่อนๆ เลือกใช้ได้ตามสะดวกนะครับ
เวอร์ชัน JavaScript
function checkID(id) {
if(id.length != 13) return false;
for(i=0, sum=0; i
รหัสประจำตัวประชาชน :
เวอร์ชั่น ASP 3
รหัสประจำตัวประชาชน :
"" Then
If checkID(Request("txtID")) Then
Response.Write "รหัสถูกต้องครับ"
Else
Response.Write "รหัสที่คุณกรอกไม่ถูกต้องครับ"
End If
End If
%>
จริงๆ แล้วถ้าเพื่อนๆ จะเอาไปใช้จริง ก็ Copy ไปเฉพาะฟังก์ชัน CheckID ก็ได้ครับ โดยพารามิเตอร์
ตัวแรกของ CheckID ทั้ง 2 ภาษานี้คือ ข้อความที่เก็บรหัสประจำตัวประชาชนไว้ครับ ฟังก์ชันนี้จะคืนค่าเป็น
True ถ้ารหัสถูกต้อง และคืนค่าเป็น False ถ้ารหัสผิดครับ
สรุป
เราได้เรียนรู้วิธีการตรวจสอบเบื้องต้น (ข้อย้ำว่าเบื้องต้น) เพราะรหัสประชาชนที่ผู้ใช้กรอก อาจมี
Check Digit ที่ถูกต้อง แต่อาจเป็นรหัสประชาชนที่ไม่มีอยู่จริงก็ได้นะครับ