玩遊戲進行身份認證的時候,故意填錯身份證號的話,系統會知道是錯誤,為什麼?

步履不停Can


玩遊戲進行身份認證的時候,故意填錯身份證號的話,系統會報錯是為什麼?

首先可以明確,遊戲公司是肯定不會知道我們的身份證號的。

那麼報錯的緣由是什麼呢?

主要來自於兩個方面的判定方式:

一、身份證是否符合構成規則。

就和手機號、銀行號、甚至學生學號一樣,身份證號也有他的構成規則,而這些規則是公開的。

因此即便遊戲公司不知道我們的身份證號,但是他可以通過這些規則來校驗身份證號是否正確。

目前周知的身份證號的構成基本規則如下:

公民身份號碼是特徵組合碼,由十七位數字本體碼和一位數字校驗碼組成。其排列順序從左至右依次為:六位數字地址碼,八位數字出生日期碼,三位數字順序碼和一位數字校驗碼。

因此只要你隨便輸入的不符合上述基本規則,自然可以判定身份證號是錯誤的。

還是拿手機號舉個例子,我們都知道大陸手機的號碼都是1開頭的11位手機號,因此如果我們隨便輸入個數字“390982374509827897698643”,根據規則一看就知道不是手機號碼了。

二、身份證是否符合公安系統的驗證。

簡單說就是,遊戲公司不知道你的身份證號,警察叔叔知道啊。

現在公民身份信息是全國聯網的,自從遊戲防沉迷以來,遊戲的實名認證自然也是歸警察叔叔管的~~~

因此每一個在遊戲中做實名認證的身份證,即便構成上符合規則,還是會到公安系統的數據庫做個校驗的。

就好像遊戲公司向警察叔叔問了句“嗨,你們那裡有這個人的記錄嗎?”

然後警察叔叔進小黑屋翻了翻檔案記錄,然後出來告訴遊戲公司“查無此人”。

然後,你就看到報錯咯~~~~

所以小結一下,遊戲裡填身份證報錯,不是遊戲公司知道你的身份證信息,而是你填入的身份證號可能不符合構成規則,或者未通過公安系統的校驗而已。

(也就是說不要用身份證幹壞事喲,警察叔叔看著的~~~括弧笑~~~)


閒雲遊戲觀


小編是一名程序員,曾經也做過身份證校驗的接口工作。遊戲公司不會知道您的身份證號的。您故意填錯身份證最後一位,肯定會校驗錯誤的。這個校驗沒有通過公安局等執法機構,因為身份證末尾數字是可以根據前面17位數字計算而來的。

先說一下身份證號的基本構成。

第一位和第二位是您出生戶口所在地的省級政府代碼。

第三位和第四位代表您出生戶口所在地的地、市級政府代碼。

第五位和第六位是代表您出生戶口所在地的縣、區級政府代碼。

而這些省、地、市、區、縣的代碼都是固定的,國家相關部門同意規定好的。從相關渠道可以獲取到這些省、地、市的代碼地址。

然後從第七位到第十四位就是您個人的出生年月。這個出生年月假如您不洩露,肯定只有您個人知道。

第十五位到第十七位代表您在出生地同年同月同日出生的一個順序號。當然,身份證號的第十七位是比較特殊的,因為第十七位數字奇數代表您為男性,偶數代表您為女性。

至於第十八為數字就是一個校驗碼了。是由國家相關部門發佈的的統一計算公式計算而來。

身份證號第十八位數字的計算方法是:

前面十七位數字分別乘以不同的係數,這個係數是:7-9-10-5-8-4-2-1-6-3-7-9-10-5-8-4-2。然後結果取和,除以11,得到餘數。

根據餘數去匹配對應的數字:1-0-X -9-8-7-6-5-4-3-2分別對於餘數0到10;

所以,您主動填錯身份證號最後一位,不用知道您的正確的身份證號也是可以校驗出您填的身份證號是錯誤的。

<strong><strong>


些許拙見,供您參考。

從事互聯網開發多年,歡迎大家騷擾


凱騰凱



身份證號的組成結構:

區域碼(6位) 出生日期碼(8位) 順序碼(2位) 性別碼(1位) 校驗碼(1位)

共18位。

  • 區域碼 指的是公民常住戶口所在縣(市、鎮、區)的行政劃區代碼,如110102是北京市-西城區。但港澳臺地區居民的身份號碼只精確到省級。
  • 出生日期碼 表示公民出生的公曆年(4位)、月(2位)、日(2位)。
  • 順序碼 表示在同一區域碼所標識的區域範圍內,對同年、同月、同日出生的人編定的順序號。
  • 性別碼 奇數表示男性,偶數表示女性。
  • 最後一位是校驗碼。

前面的沒啥好說的,最主要的是最後這個校驗碼。

最後一位是校驗碼,這裡採用的是ISO 7064:1983,MOD 11-2校驗碼系統。校驗碼為一位數,但如果最後採用校驗碼系統計算的校驗碼是“10”,礙於身份證號碼為18位的規定,則以“X”代替校驗碼“10”。

可能這個解釋你不能看懂,那麼我下面手擼一遍計算過程。

校驗碼計算方式(小學生能看懂版本):

假設一個身份證前17位:33078119850907809

  • 取身份證第1位
  1. 計算17減0[身份證位數減1] 17-(1-1)=17
  2. 計算2的17次方 2^17=131072
  3. 計算131072除以11,取餘數 131072➗11=11915……7 下面以 131072%11=7 表示
  4. 用7乘以3[身份證號第1位數字] 7*3=21
  5. 記錄下21這個數字

取身份證第2位

  1. 計算17減1[身份證位數減1] 17-(2-1)=16
  2. 計算2的16次方 2^16=65536
  3. 計算65536除以11,取餘數 65536%11=9
  4. 用9乘以3[身份證號第2位數字] 9*3=27
  5. 記錄下27這個數字

取身份證第3位

………………

取身份證第17位

  1. 計算17減16[身份證位數減1] 17-(17-1)=1
  2. 計算2的16次方 2^1=2
  3. 計算2除以11,取餘數 2%11=2
  4. 用2乘以9[身份證號第17位數字] 2*9=18
  5. 記錄下18這個數字
  • 我們把這17個數字相加最後結果是423(不信可以自己手動算)
  • 計算最後結果423除以11 取餘數 423%11=5
  • 計算12減5 12-5=7
  • 計算7除以11取餘數 7%11=7

最後的計算結果只可能是1-10 這10個數字,因為身份證號只有18位 所以如果最後這個校驗碼是10那麼就記為X

那麼我們得到最後一位的校驗碼是7

如果你有時間,可以手動計算一遍自己的身份證校驗碼。

為了避免重複計算已經幫你把前面17步重複計算的前三步結果計算好了。

7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2 校驗碼權重:1

也就是你每位身份證號乘以對應位數的數字就行。

後面的計算 拿計算器的話 大概一分鐘之內能算完。

下面給出校驗碼計算的代碼 --python3

下面給出自動生成身份證號的代碼 --python3

輸出結果


冠教獸


遊戲公司是不知道的,這只不過是程序員在做這個功能的時候,加上了身份證的校驗!

身份證中的數字的解讀

身份證號的前6位使用來判斷持證人的戶籍所屬地的,如圖:

所以,一般看一個人的身份證號的前6位,就知道這個人是哪個省份的。

第7-14位是本人的出生日期,不用多說。

第15-17位,這三位是順序碼!

這個碼是縣、區級政府所轄派出所的分配碼,每個派出所分配碼為10個連續的數。

比如:010-019 或者 030-039。

第17位,如果是單數,那麼就是男性,反之,為女性。

比如:001是男性,002是女性。

第18位,也就是最後一位,是校驗位,由0-9的數字組成。

有的人會是x,別以為錯了,這其實是羅馬數字裡,10的意思!

第18位的作用是其實是為了校驗一個身份證號碼是不是正確的。

這裡面有具體的一套算法,不是說隨便改改就好了,所以,你改了最後一位,就會被檢測出來,你這是個假的身份證。

也不是說改其他的就可以的,一樣會被檢測出來,除非運氣好,碰上了。


「生活需要儀式感,從做一個互聯網上的瘦子開始!看完別忘了點個贊,點個關注哦!」

不想當程序員的胖子


身份證第十八位稱為校驗位,可以根據前十七位算出。校驗位不正確的身份證過不了驗證

像題主所說改了生日但其他都沒動,那麼算出校驗值就變了,對應的第十八位也應該改變才行。(要不然就說你身份證不正確)

\r校驗位正確的身份證稱為合法身份證,但合法的身份證不一定都存在且有效。

\r看到很多人說什麼api啊 聯網啊 公安啊,都是驗證身份證和姓名是否一致才用的上。接口要花錢的而且信息返回並不及時,所以在防沉迷驗證時就算身份證不存在但校驗位正確一般是可以通過的(比如網易的遊戲)。

因為調用接口要花錢所以在大部分地方都不會驗證你的姓名和身份證是否一致,而是根據算法判斷身份證的合法性(合法的身份證不一定真實存在)。

在關鍵的地方會施行 聯網花錢驗證身份證號和姓名是否一致(比如買電話卡)但在大部分公司看來防沉迷並不關鍵除了財大氣粗的公司。


W65301464


你故意輸入錯誤是因為你的身份證信息,已經在大數據庫中存在,為什麼叫大數據時代,數據都是相互通的,比如公安局數據庫,身份證信息,這些作為遊戲公司都是必須驗證的

現在遊戲公司的一些防沉迷和一些防未成年系統,都是和公安部身份信息大數據鏈接,這也是一種必須監管的政策,怕過度沉迷於遊戲,所以,因為每個地區都有段號和我們的手機號碼其實是大同小異,一個道理,前三位開頭是什麼地方的然後你的生日,後四位會是什麼意思,這都是有一定說法的,你估計輸入錯誤,因為在你這個系統匹配身份裡,無法識別你的信息。

也就是說或許你這個1125匹配的不死你這個地區的或者生日的,這就是數據時代

希望我的回答可以幫助你


遊戲開心說


網遊公司用的都是算法。不是和公安聯網的具體到每個人的身份信息。打個比方,你只要用別人的正確身份證,輸入你自己的名字,照樣可以通過防沉迷檢測。但是萬一你被盜號想找回的時候就比較麻煩了


雕刻絲光



像騰訊,網易這種應該是藉助一套防沉迷系統來實現的,像網易自己說的那樣,流程是提交身份證號碼和實名到公安系統進行驗證,很有可能公安部公開了驗證接口,因為好幾年前不是有個網絡遊戲防沉迷暫行辦法文件什麼的麼,具體也不太清楚。有些小平臺遊戲可能只是通過身份證驗證算法進行校驗的。


但無論如何一個公司是不可能掌握國民身份證數據的,這一點是可以肯定的。


小歪遊神


無意中點進來了,答主這個回答算是最粘邊的了,其實評論更有趣,大家在爭論同一個解答卻使用了不同的語法,所以大家都沒看懂大家的意思。菸草來總結一下答案吧,其實很簡單,首先,遊戲服務器先通過算法校驗,看看身分證號有否算錯,因為不排除有不小心點到其它數字或者是小了(多了)一位數的情況,所以題主改動生日日期由於沒去計算校驗碼,系統直接就提示錯誤了,注意了,在這個時候,系統仍未聯網公安局api接口的,原因是成本,為校驗一個錯誤的號碼而付費了,那麼競爭對手還不找一百幾十個人不停的做錯誤註冊,一天下來你公司就倒閉了吧!然後,大遊戲公司確實需要對接公安局數據庫校驗身份真實性的,但絕大多數並不是實時校驗,大部份是晚上空閒時間再集中校驗的,所以很多APP的實名驗證並不是馬上通過,而是延後一兩天,也有部份是採取先通過,後面校驗有問題了再取消你的實名驗證


菸草有毒and八月


現在是數據化互聯網時代,所有的信息和資料都是通過網絡傳遞來完成的,個人身份信息也一樣是可以通過網絡信查詢而完成的。

當然了,個人身份信息是受法律保護的,不是雖便就可以查詢到的,只有經公安機關審核通過的政府機構和單位才有權進入個人身份信息系統,而媒體只所以能識別,那是經過公安機關審核認可的,所以你改動的錯誤數據經過系統識別對比就知道數據出現錯誤,過程大該就是這樣。


分享到:


相關文章: