


摘要:號碼查詢和驗證是保證我們信息和財產安全的重要手段,而身份證號碼和手機號碼查詢驗證是其中的重中之重。本課題設計并開發了一種集成號碼查詢的應用,用戶可以在這個應用上查詢號碼歸屬地和身份證信息,比如:身份證簽發地、當前號碼性別、出生年月日等信息。
關鍵詞:手機號碼查詢;身份證號碼查詢;號碼歸屬地;身份證性別;身份證歸屬地;號碼查詢;Android查詢
中圖分類號:TP311.52?文獻標識碼:A??文章編號:1671-2064(2019)16-0000-00
1課題的設計與實現
1.1方案設計
1.1.1設計原理
(1)身份證號驗證設計原理。
1)身份證號碼結構。早期“身份證號碼”叫“社會保障號”,為15位,1999年開始更名為公民身份證號碼,即第二代身份證,為18位,且終身不變。
2)15位與18位身份證號碼差異。出生日期碼:15位身份證號碼中出生日期碼為4位,其中年份代碼僅有2位,如590328,代表1959年生。
校驗碼:15位身份證號碼中無校驗位。
3)校驗碼算法。將本體碼各位數字乘以對應加權因子并求和,除以11得到余數,根據余數通過校驗碼對照表查得校驗碼。
加權因子,如表1所示。
校驗碼,如表2所示。
算法舉例:
本體碼為:11010519491231002
第一步:各位數與對應加權因子乘積求和1*7+1*9+0*10+1*5+......=167
第二步:對求和進行除11得余數167%11=2
第三步:根據余數2對照校驗碼得X
因此完整身份證號為:11010519491231002X
4)編碼規則的應用。如上所述,身份證號碼是基于一定的規則的,從身份證號碼中可以挖掘以下信息:
① 身份證長度驗證:身份證長度僅存在15位或18位兩種長度;
② 身份證輸入正確性驗證:如身份證號為18位,可根據本體碼與校驗碼得關系驗證身份證號碼輸入有誤,需要指出的是,驗證通過并不代表身份證號碼的真實性;
③ 出生年月日及其正確性;(1、2、3以及身份證號碼格式中任意一項不合法就不需要驗證,轉而要求用戶重新輸入)
④ 獲得戶籍注冊地信息:大部分情況下,該地即為出身地或籍貫。對應時需留意行政區劃代碼的更新迭代;
⑤ 性別:順序碼中奇數為男性,偶數位為女性;
⑥ 根據18位與15位身份證號碼編碼規則及校驗碼算法,將15位身份證號碼轉換為18位身份證號碼;
⑦ 因校驗碼為X,實際上有大小寫輸入不同,需注意兼容或統一。
5)實名認證的方式。在互聯網產品中,“實名認證”的方式大致有3種:
① 姓名+身份證號碼匹配認證。產品舉例:火幣網、金斧子網站;
② 身份證正反面照片+人臉照片認證。產品舉例:火幣網、云幣網;
③ 身份證正反面照片+人臉識別。產品舉例:阿里小號。
要采取哪種方式,要視產品目標與用戶需求而定。目前來看,方式3應用較少,可能這有一定的技術難度,所以一般公司并不會采用。而方式1與方式2的使用都比較多,其中方式2更為可靠,方式1更為簡單。以上3種方式,都談不上絕對可靠,但可靠性在逐漸升高,能過濾掉的作弊用戶也在增多。當然,技術難度與維護成本也在升高。
所以,有些網站對不同級別用戶使用不同的認證方式:對低級別用戶,使用方式1;對中等級別用戶,使用方式2;對高級用戶,使用支付寶的芝麻認證。
對于方式1:姓名+身份證號碼匹配認證
乍一看,這種認證似乎很簡單——不就是驗證一下是否匹配嗎?但細分之后,就有很多值得玩味的細節。比如:如何驗證身份證號碼與姓名是否匹配?驗證過程速度如何?驗證的成本如何?
6)認證成本與時間。姓名+身份證號碼是否匹配,根據官方系統提供的數據進行。這就帶來了兩個關鍵問題:
① 成本較高——一次認證1元以上;
② 認證時間可能較長——有時可能需要十幾秒才能返回認證結果。
解決方案:盡量將錯誤認證阻擋在產品中,而不是讓其進入官網系統,從而節省成本,節省用戶驗證時間,提升用戶體驗。
因此,應該在姓名、身份證號的格式驗證上下更多工夫。
① 姓名格式驗證:國人的姓名,大都為2-4位中文字符,所以驗證時應驗證其是否為中文、位數是否大于1位小于5位?當然,上限可以適當提高。
② 身份證號碼格式驗證。
1.1.2線框圖方案與設計
功能1:手機號碼查詢和身份證號碼查詢可以點擊切換,默認打開頁面為手機號碼查詢,切換到身份證號碼頁面顯示身份證號碼內容。
功能2:身份證號碼查詢,默認展示“請輸入所查詢的身份證號碼”,當用戶輸入內容的時候默認展示消失,當用戶清空輸入內容的時候,再次展示默認提示。
功能3:查詢,如果符合號碼查詢規則的號碼,則查詢返回結果:輸出元素,身份證號碼:對應輸入正確身份證號碼,歸屬地:服務端返回的名稱,性別:服務端返回的性別,只有男和女,生日:服務端返回到生日格式為:XXXX年XX月XX日。如果沒有符合號碼規則,統一提示“您輸入的身份證號碼不正確,請重新輸入”。
功能4:查詢未連接網絡,則提示“網絡連接失敗,請檢查網絡”。
1.2產品實施開發
1.2.1開發環境搭建
在windows 10系統中搭建開發環境,配置JDK(jdk-9.0.1)、環境變量和Android開發工具Android Studio。
1.2.2開發結果樣式(圖1)
用戶在空間內填寫內容,如果數據填寫的違背規則則會報錯,網絡鏈接有問題也會報錯,在確保網絡暢通且輸入內容正確的情況下,客戶端會將服務端返回的數據按照內容排放位置準確的展示出來。
1.3測試與驗證
1.3.1測試環境和條件
測試分仿真模擬測試和真機測試;
仿真模擬測試環境在AVD(Android Virtual Device)中測試;
真機測試:華為手機;
手機型號:EVA-AL10;
硬件配置:Android版本6.0;內核版本號:3.10.90-g0d59b0candroid@localhost #1 Wed nov 30 03:27:24 CST 2016;RAM:4G;CPU:Hisilicon Kirin955。
1.3.2測試步驟與內容
使用產品,輸入手機號和身份證號,查看是否有報錯信息,使用是否流暢,輸出是否正確。
1.3.3測試結果分析(表1)
2?結論與展望
2.1結語
場景1:用戶打開app,如果想要查找手機號碼,那么直接在默認頁面輸入所查詢的手機號碼,然后點擊查詢后經過數據加載,看到結果手機號碼對應的歸屬地和運營商,用戶通過app可以簡單的操作查詢到想要的結果。
場景2:用戶打開app,如果想要查找身份證號碼,那么直接在默認頁面輸入所查詢的身份證號碼,然后點擊查詢后經過數據加載,看到結果身份證號碼的簽發地、對應公民的出生日期、性別等結果。
2.2展望
此號碼查詢工具目前是一個初步的探索性研究,未來可優化的方向包括:
(1)查找別的號碼。例如:通過銀行卡號碼分析是什么銀行的,是儲蓄卡還是信用卡,快遞號碼查詢物流公司和物流狀態。
(2)功能:語音輸入。
(3)不需要區分號碼自動輸入號碼根據規則匹配出想要的結果。
(4)條形碼掃碼查詢。
(5)將身份驗證功能拓展到實際生活場景或是行業領域中。比如停車場中,通過掃描車牌號,定位車主信息,增加安全性能。
目前這個APP還處于初級階段,若后續能對接公安系統、銀行系統、稅務系統、旅游系統、物流系統等,其應用場景就會更加廣泛。當然,這種系統的對接要建立在合法合規的基礎之上,一些涉及個人隱私如銀行賬戶等信息,仍需要在特定條件下才能查詢。
參考文獻
[1] 靳巖,姚尚郎.Google Android開發入門與實踐[M/CD].北京:人民郵電出版社,2009.
[2] 余志龍,陳旻勛,等.Google Android SDK開發范例大全[M].北京:人民郵電出版社,2009.
[3] 公磊,周聰.基于Android的移動終端應用程序開發與研究[J].計算機與現代化,2008(08):85-89.
收稿日期:2019-06-11
作者簡介:汪志陽,男,漢族,上海人,研究方向:計算機。