关于身份证校验算法的一些想法
身份證校驗這東西相信只要是涉及到錄入身份證這環節都是要求加上校驗。校驗分兩種,一種是接入公安信息庫,這樣子得出來的結果肯定是非常準確的,另一種是通過位數+尾數+出生年月日校驗,得出一個能滿足絕大多數用戶的校驗。
可能看完開頭這一段話就有人反駁,為啥不做地區校驗。如果你提到地區校驗那說明你還是對身份證的生成有一定的了解的,但是也不是了解的很透,接下來我就講一下為啥不能用地區校驗。
做過功課的人應該知道,我國有34個省、直轄市和特別行政區,這34個地區在身份證上是前兩位,然后3到4位是地級市,5到6位是縣級行政區域,身份證的前六位就由這三個地區的編碼來組成。按道理說用最新國家版的地區編碼來做映射,就可以得出一個完美的校驗結果。但是,除了省級的行政編碼比較少發生變化,縣級甚至是市級的變化就比較頻繁了。我就拿生產上的幾個數據做例子。在生產上我看到一條身份證前六位為360501的數據。在國家統計局里,是有這條數據的,但是在民政部的數據里,就發現沒有了。可能你說一個網站沒有一個網站有這可能說明兩個部門的數據更新不及時。這不我又找到了一條這兩個部門都沒有的數據:362330,這個數據查了一下是江西上饒的,但是去上面的這兩個網站查了一下江西上饒現在的代碼是361128。
看到這里,要是你想做一個非常準確的地區校驗不依賴公安系統,還是有一個辦法。就是去政府網站里把這些歷史數據一個一個的記錄下來,寫在一張表里做映射,那這樣準確性可能會高很多。不過這種工作量這么大的事情一定要做嗎,做出來的結果可能還是和公安系統那里有出入,你想一個地區如果本來身份證是有這樣的編碼的但是由于缺漏導致了整個地區的人身份證校驗不通過,這影響可就大了。而且拿這么準確的數據想要干什么。在這里我打一個大大的問號。
總結
以上是生活随笔為你收集整理的关于身份证校验算法的一些想法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux下执行efi文件,在Linux
- 下一篇: HALCON示例程序count_fish