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