VB.NET實現身份證15位升18位的算法

2020-11-26 太平洋電腦網
  根據〖中華人民共和國國家標準 GB 11643-1999〗中有關公民身份號碼的規定,公民身份號碼是特徵組合碼,由十七位數字本體碼和一位數字校驗碼組成。排列順序從左至右依次為:六位數字地址碼,八位數字出生日期碼,三位數字順序碼和一位數字校驗碼。

  地址碼表示編碼對象常住戶口所在縣(市、旗、區)的行政區劃代碼。生日期碼表示編碼對象出生的年、月、日,其中年份用四位數字表示,年、月、日之間不用分隔符。順序碼表示同一地址碼所標識的區域範圍內,對同年、月、日出生的人員編定的順序號。順序碼的奇數分給男性,偶數分給女性。校驗碼是根據前面十七位數字碼,按照ISO 7064:1983.MOD 11-2校驗碼計算出來的檢驗碼。下面舉例說明該計算方法。

  15位的身份證編碼首先把出生年擴展為4位,簡單的就是增加一個19,但是這對於1900年出生的人不使用(這樣的壽星不多了)

  某男性公民身份號碼本體碼為34052419800101001,首先按照公式⑴計算:

  ∑(ai×Wi)(mod 11)……………………………………(1)

  公式(1)中:
  i----表示號碼字符從由至左包括校驗碼在內的位置序號;
  ai----表示第i位置上的號碼字符值;
  Wi----示第i位置上的加權因子,其數值依據公式Wi=2(n-1)(mod 11)計算得出。

  i 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1

  ai 3 4 0 5 2 4 1 9 8 0 0 1 0 1 0 0 1 a1

  Wi 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 1

  ai×Wi 21 36 0 25 16 16 2 9 48 0 0 9 0 5 0 0 2 a1

  根據公式(1)進行計算:

  ∑(ai×Wi) =(21+36+0+25+16+16+2+9+48++0+0+9+0+5+0+0+2) = 189

  189 ÷ 11 = 17 + 2/11

  ∑(ai×Wi)(mod 11) = 2

  然後根據計算的結果,從下面的表中查出相應的校驗碼,其中X表示計算結果為10:

  ∑(ai×WI)(mod 11) 0 1 2 3 4 5 6 7 8 9 10
  校驗碼字符值ai 1 0 X 9 8 7 6 5 4 3 2
  根據上表,查出計算結果為2的校驗碼為所以該人員的公民身份號碼應該為 34052419800101001X。

  '功能:將15的身份證號升為18位(根據GB 11643-1999)
  '參數:原來的號碼
  '返回:升位後的18位號碼
  Private Function getCheckCode(ByVal SFZH As String) As String
  Dim strJiaoYan() As Char = {"1", "0", "X", "9", "8", "7", "6", "5", "4", "3", "2"}
  Dim intQuan() As Integer = {7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1}
  Dim strTemp As String
  Dim intTemp As String
  Dim i As Integer

  strTemp = SFZH.Substring(0, 6) & "19" & SFZH.Substring(6)
  For i = 0 To strTemp.Length - 1
  intTemp = intTemp + Convert.ToInt32(strTemp.Substring(i, 1)) * intQuan(i)
  Next
  intTemp = intTemp Mod 11

  Return strTemp & strJiaoYan(intTemp)
  End Function

相關焦點

  • C#實現的18位身份證格式驗證算法
    18位身份證標準在國家質量技術監督局於1999年7月1日實施的GB11643-1999《公民身份號碼》中做了明確的規定。三、號碼的結構和表示形式 1、號碼的結構  公民身份號碼是特徵組合碼,由十七位數字本體碼和一位校驗碼組成。排列順序從左至右依次為:六位數字地址碼,八位數字出生日期碼,三位數字順序碼和一位數字校驗碼。 2、地址碼  表示編碼對象常住戶口所在縣(市、旗、區)的行政區劃代碼,按GB/T2260的規定執行。
  • 身份證號一共18位,除了生日還有6大信息,很多人都不知道!
    身份證號一共18位,除了生日還有6大信息,很多人都不知道!如果說一個人最重要的證件是什麼,相信大多數都會說是「身份證」了,確實,身份證不管是我們平常要辦大小業務,還是出遠門,包括去個網吧、住個酒店等,都需要用到身份證。
  • 身份證後四位代表什麼?這一串18位數字中代表的含義你知道嗎?
    雖然身份證使我們生活中必不可缺的,但是不是每個人都懂的這一串18位數字中代表的含義。在這裡小編就給大家介紹一下:身份證號碼是我國為每個公民從出生之日起編定的唯一的、終身不變的身份代碼。第1和2位代表所在省份的代碼,3和4位代表的是所在城市的代碼,5和6位數字代表所在區縣的代碼,7~14位代表本人的出生年月日,15和16位數字代表本人所在地的派出所的代碼。最後一位是校驗碼。作為尾號的校驗碼,是由號碼編制單位按統一的公式計算出來的。如果某人的尾號是0到9都不會出現X但是如果尾號是10,那麼就得用X來代替。
  • 身份證號碼的數字代表什麼意義 18位身份證號碼的含義
    要知道我們每個人一出生,就意味著會有一個專屬自己的身份證號碼,這也是大家身份的證明,但你知道身份證號碼上面的數字有什麼含義嗎?下面一起來看看。首先大家要知道的一點是身份證號碼是有18位數組成的。其次,身份證號碼的1-2位表示省、自治區、直轄市代碼。
  • 身份證號18位數字,一共包含7大信息,你可能只看懂了生日!
    身份證號18位數字,一共包含7大信息,你可能只看懂了生日!現在很多人,特別是在校和剛畢業的大學生,都喜歡考證,因為我們有「藝多不壓身」這一說法,多會點東西總沒壞處。而在我國,有一樣證是不用考的,那就是身份證了,相信在大多數國家都是這個樣子。
  • 身份證號第18位數字代表什麼 為啥有的人是X?
    原標題:身份證號第18位數字代表什麼,為啥有人是X?原來……  身份證號第17位數字代表了什麼?  身份證號碼由18位數組成:  (1)前1、2位數字表示:所在省份的代碼;  (2)第3、4位數字表示:所在城市的代碼;  (3
  • 身份證號碼有18位,有的最後一位是X,這些數字代表什麼意義呢?
    1-6位:表示出生地編碼;(1-2:省份;3-4:城市代碼;5-6:區縣代碼)7-10位:表示出生年份;11-12位:表示出生月份;13-14位:表示出生日期;15-16位:表示出生順序編號;17位:表示性別標號;18位:表示驗證碼(X:表示的是驗證碼10)。
  • 身份證號共18位數字,一共包含7個信息,只知道生日就太單純了!
    身份證號共18位數字,一共包含7個信息,只知道生日就太單純了!身份證號碼為18位,包含7條信息。這是一般人會說我可以從身份證上知道一個人的生日,那麼我想說那是最簡單的。那麼今天我們要說的就是關於身份證上的這18個號碼透漏給我們的信息。許多人不知道身份證號碼的18位數字的具體含義。事實上,它們的組合包含了一個人的七個主要信息。如果只知道身份證號碼裡有生日,那你就想得太簡單了。7個主要信息是什麼呢?現在讓我們仔細地談一下吧。自古以來,中國就是一個人口大國。公民身份證號碼由18個阿拉伯數字組成。因此,中國找不到兩個身份證號碼相同的人。
  • 為啥有的娃,身份證末尾是大寫「X」?專家道出18位數字裡的含義
    身份證對於每一個人來說都極其重要,沒有身份證幾乎什麼事情都做不了,只有持有身份證我們才能坐火車、住酒店等等,可以說身份證已經成為了個人的「通行證」。下面,我們來講一講身份證號碼18位數字的構成,其中的含義,父母要清楚。1、 身份證末尾是大寫的「X」或者數字身份證號碼末尾是大寫的「X」並沒有特殊的含義,其實「X」代表著數字「10」。
  • 身份證一共18位數字,除了生日之外,這6大信息多數人都不知道!
    身份證一共18位數字,除了生日之外,這6大信息多數人都不知道!經常使用身份證的我們可能知道,身份證下邊設置的號碼總共有18位,這18位數囊括了中國十幾億人口身份證的全部,所以在設計這十八位數字的過程中必須要非常的科學嚴謹,絲毫不能有疏漏,同時又能根據編碼看出一個人具體的信息,要求簡單高效,大家都知道身份證的7到14位總共八個數字,是我們每個人的生日,在此小編就不加解釋了,接下來小編就解釋一下第1位到第6位,第15位到第18位數字所代表的不同信息。
  • 固話升8位 城市新名片
    2008年5月18日,中山市固定電話正式升8位。2008年5月18日零點,經過中國電信中山分公司技術人員全網撥測顯示:網絡運行狀況良好——中山市固定電話(含小靈通)正式升8位。「號碼升8位,不是簡單地增加了一個數字,其中的艱辛外人並不知道,升位既是通信技術升級的需要,也是經濟發展的必然需求,8位數固話號碼是中山城市的一張重要名片。」通信事業的發展見證著中山經濟的發展。改革開放以來,我市的固定電話號碼實現從5位逐漸升到8位,每一次升位都伴隨著技術的升級和經濟發展的需要。
  • 原來身份證後4位是這個意思,現在才知道
    身份證號碼是我國為每個公民從出生之日起編定的唯一的、終身不變的身份代碼。身份證上的號碼,你知道代表什麼嗎?前六位對應省市區,以首次辦理身份證的地址排位,不會根據地址或戶籍變化而變動。7至14位是出生年月日。
  • 原來身份證後4位是這個意思,現在才知道!
    身份證號碼是我國為每個公民從出生之日起編定的唯一的、終身不變的身份代碼。身份證上的號碼,你知道代表什麼嗎?前六位對應省市區,以首次辦理身份證的地址排位,不會根據地址或戶籍變化而變動。
  • 原來身份證的後四位是這個意思,終於給弄明白了!
    原來身份證的後四位是這個意思,終於給弄明白了!身份證號碼是我國人民必須有的一個證件,在身份證的上面有著你的出生年月日,那是終身不變的代碼。在身份上的號碼,你可知道代表著什麼?身份證的請六位,對應的是省市區,是以首次辦理身份證的地址來排位的,這個號碼是不會跟著地址或者戶籍的變化而變化的,7-14位那是你的出生年月日。15-17位那是同一地區的碼所標誌的地區範圍對應出生年月日所編訂的順序碼。其中的第17位表示的是性別,奇數是「男性」,偶數是「女性」。最後一位數是校驗碼。
  • 身份證各位數字的含義
    現在通用的身份證號碼有15位的和18位的,現在通用的是18位的,身份證各位數字都有其含義,15位身份證也是可以轉化成18位的。15位身份證號碼各位數字含義:15位數字按從左到右數依次表位1-15位,1-6位出生地編碼,7-8位出生年份,9-10位出生月份,11-12位出生日期,13-14位出生順序編號,15位性別標號(奇數為男性,偶數為女性)。
  • 身份證號前6位和後4位,總共包含了6大信息,看完漲知識了
    身份證號前6位和後4位,總共包含了6大信息,看完漲知識了只要是中國的合法公民,每個人年滿18歲的時候,都可以去辦理一張獨一無二的身份證。它不僅是個人身份的證明,現在去到哪裡都需要使用到。不管是去酒店、乘飛機、坐火車,還是到各個地方辦事,機會都需要身份驗證。
  • 「探索」「310」開頭的身份證,後面三位代表了哪個區?
    你知道身份證號碼最後一位是怎麼來的嗎?為什麼會有X呢?310105開頭對應的是哪個區?310115呢?原來,身份證1-6位是地區碼;7-14是生日碼;15-17位是順序碼,其中第17位單數為男、雙數為女哦;第18位是校驗碼,計算則很複雜,X代表的是「10」。
  • 身份證號共有18位數字,除了生日,還有6大信息你知道幾個?
    身份證號共有18位數字,除了生日,還有6大信息你知道幾個?身份證是對於我們每個人都是非常重要的東西,可以說它是我們「身份」的象徵,其實有了身份證我們不管是要去哪裡都是非常方便的事情,遠的我們出趟遠門近的我們去網吧或者去酒店開房都是需要有身份證的,而且我們在去一些地方旅遊的時候身份證也是非常重要的,有時候警察也會查的,如果沒有帶可能就會非常大的麻煩!那我們的身份證上有18位數字,除了生日,還有6大重要信息大家知道幾個呢?
  • 身份證後4位原來是這個意思,今天總算知道真相,看完長知識了
    我們出門在外都會把身份證帶在身上,在日常生活當中,很多時候都會用得到身份證。身份證下面的這一串數字,可能還有很多人都不懂它們的含義,今天小編跟大家介紹一下,這18位數字的具體含義,下面讓我們一起來看看吧。
  • 利用華邦四位機實現帶農曆24節氣萬年曆的低成本設計
    [摘要]: 本文描述了一種利用華邦四位機來設計帶有農曆24節氣的萬年曆的設計方法,同時對於其中軟體的算法和硬體的電路設計進行了計算和分析。 [關鍵字]:節氣, 列表法, 微處理器, 單片機, 算法   在當前的產品設計中,人們在追求產品高性能的同時,也在追求產品的低成本。