? ? 想了好久,不知道取什么標(biāo)題,姑且暫時(shí)定這個(gè)標(biāo)題吧。
? ? 在筆者的測(cè)試經(jīng)歷中叉庐,曾遇到過這樣一個(gè)案例? 身份證校驗(yàn) 輸入15個(gè)1 能校驗(yàn)通過。筆者曾經(jīng)試圖打算當(dāng)bug 反饋給研發(fā)双吆,但憑借著職業(yè)敏感眨唬,決定嘗試輸入其他的測(cè)試條件 18個(gè)1 ,15個(gè)2進(jìn)行嘗試, 結(jié)果在我的預(yù)料之中好乐,這2次的輸入測(cè)試是不合法的。那么問題來了瓦宜,這15個(gè)1是否屬于合法身份證? 帶著這些疑問蔚万,筆者開始尋找真相。
? ? ? 首先在網(wǎng)上的一些身份證校驗(yàn)的網(wǎng)站上临庇,大多數(shù)是認(rèn)可15個(gè)1 是合法的反璃,少部分網(wǎng)站認(rèn)為不合法,然而網(wǎng)上的一些技術(shù)黨們爭論不休假夺。 回到這淮蜈,我們不妨看一下身份證的驗(yàn)證規(guī)則 前6位 地區(qū)碼? 以此代表省 市 區(qū)(縣) 。中間8(6)位 是我們的出生年月日已卷,剩下的是3位為順序碼 梧田。其中18位身份證中的最后一位為校驗(yàn)碼。倒數(shù)第二位為性別,這里對(duì)這個(gè)不在闡述裁眯。由于順序碼的產(chǎn)生是隨機(jī)的鹉梨,所以也不做討論。
? ?? 回到正題15位的身份證號(hào)(15個(gè)1)是否合法呢穿稳?接下來給大家看一張圖:
? ?? 看到這存皂,可能很多朋友明白了,自己的身份證的最后一位是怎么來的了逢艘,不妨自己可以對(duì)照這張表旦袋,自己計(jì)算試試。 以本文的例子來說通過計(jì)算得到最后的和為108 除以11 得到的余數(shù)為9.8 那么對(duì)應(yīng)的數(shù)為3 ? 那么這個(gè)15位號(hào)碼轉(zhuǎn)換為18為既為: ?? 11111119111111113 ?? 單從計(jì)算規(guī)則來看 它改,那么這個(gè)在理論上是成立(合法)的疤孕, 我們現(xiàn)在把這個(gè)放到部分查詢網(wǎng)站上去驗(yàn)證,得到的結(jié)果是通過的搔课,但也有部分是不通過的胰柑,那么剩下的唯一可能性就是地區(qū)碼的可能性了。 下一步筆者找了一些地區(qū)的地區(qū)碼做進(jìn)一步的驗(yàn)證爬泥。
? ? ?? 北京11柬讨、天津12、河北13袍啡、山西14踩官、內(nèi)蒙古15逞度、遼寧21万栅、吉林22昼蛀、黑龍江23哀军、上海31刷允、江蘇32猿规、浙江33蕾域、安徽34姑裂、福建35信粮、江西36黔攒、山東37、河南41强缘、湖北42督惰、湖南43、廣東44旅掂、廣西45赏胚、海南46、重慶50商虐、四川51觉阅、貴州52崖疤、云南53、西藏54留拾、陜西61戳晌、甘肅62、青海63痴柔、寧夏64沦偎、新疆65、臺(tái)灣(886)71咳蔚、香港(852) 81豪嚎、澳門(853) 82。 (這些只是省份代碼)?
下面我以北京以及湖南懷化的二個(gè)地區(qū)碼為例:
110101 19111111 1113 谈火、 ? 431281 19111111 1113 ? 在各大查詢網(wǎng)站均查詢通過侈询。由于6個(gè)1的地區(qū)碼并為在度娘中查到,因此如果嚴(yán)格按照身份驗(yàn)證的規(guī)則來說的話糯耍,本案例所說的15個(gè)1這條身份證號(hào)碼是不存在的了扔字。
?? 接下來我想討論的是,需求是否一定要求嚴(yán)格的身份校驗(yàn)温技。 其次如果判斷前面的地區(qū)碼的話革为,如果有的縣升級(jí)為市,部分區(qū)合并等等舵鳞,可能會(huì)使用新的地區(qū)碼震檩,那么這個(gè)時(shí)候,是否在對(duì)程序進(jìn)行判斷蜓堕,更改呢抛虏? 這樣豈不是更麻煩? ? 其次這樣帶來的好處套才,以及做這個(gè)功能所帶來的開發(fā)代碼以及測(cè)試成本迂猴,整個(gè)之間的關(guān)系值得思考。
寫在文末:
? ? ? 如果你要好的建議和想法背伴,或者測(cè)試途中遇到的趣事歡迎一起交流和討論错忱。