欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

身份證號(hào)碼驗(yàn)證算法深入研究和Java實(shí)現(xiàn)

 更新時(shí)間:2015年06月29日 12:21:02   投稿:junjie  
這篇文章主要介紹了身份證號(hào)碼驗(yàn)證算法深入研究和Java實(shí)現(xiàn),本文講解了18身份證號(hào)碼的結(jié)構(gòu)、根據(jù)17位數(shù)字本體碼獲取最后一位校驗(yàn)碼程序?qū)嵗葍?nèi)容,需要的朋友可以參考下

做項(xiàng)目的時(shí)候需要對(duì)拿到的數(shù)據(jù)進(jìn)行“清洗”,比如剔除一些不可能存在的身份證號(hào)碼。查閱了網(wǎng)上的身份證號(hào)碼驗(yàn)證算法,自己也總結(jié)一下。

(一)18身份證號(hào)碼的結(jié)構(gòu)

  公民身份號(hào)碼是特征組合碼,由十七位數(shù)字本體碼和一位校驗(yàn)碼組成。

  排列順序從左至右依次為:六位數(shù)字地址碼,八位數(shù)字出生日期碼,三位數(shù)字順序碼和一位校驗(yàn)碼。

1、地址碼

  表示編碼對(duì)象常住戶口所在縣(市、旗、區(qū))的行政區(qū)域劃分代碼,按GB/T2260的規(guī)定執(zhí)行。

2、出生日期碼

  表示編碼對(duì)象出生的年、月、日,按GB/T7408的規(guī)定執(zhí)行,年、月、日代碼之間不用分隔符。

3、順序碼

  表示在同一地址碼所標(biāo)識(shí)的區(qū)域范圍內(nèi),對(duì)同年、同月、同日出生的人編定的順序號(hào),順序碼的奇數(shù)分配給男性,偶數(shù)分配給女性。

4、校驗(yàn)碼計(jì)算步驟

(1)十七位數(shù)字本體碼加權(quán)求和公式

  S = Sum(Ai * Wi), i = 0, ... , 16 ,先對(duì)前17位數(shù)字的權(quán)求和
  Ai:表示第i位置上的身份證號(hào)碼數(shù)字值(0~9)
  Wi:7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 (表示第i位置上的加權(quán)因子)

(2)計(jì)算模

  Y = mod(S, 11)

(3)根據(jù)模,查找得到對(duì)應(yīng)的校驗(yàn)碼

  Y: 0 1 2 3 4 5 6 7 8 9 10
  校驗(yàn)碼: 1 0 X 9 8 7 6 5 4 3 2

(二)根據(jù)17位數(shù)字本體碼獲取最后一位校驗(yàn)碼程序?qū)嵗?/strong>

public class Id18 {
  int[] weight={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};  //十七位數(shù)字本體碼權(quán)重
  char[] validate={ '1','0','X','9','8','7','6','5','4','3','2'};  //mod11,對(duì)應(yīng)校驗(yàn)碼字符值  
  
  public char getValidateCode(String id17){
    int sum=0;
    int mode=0;
    for(int i=0;i<id17.length();i++){
      sum=sum+Integer.parseInt(String.valueOf(id17.charAt(i)))*weight[i];
    }
    mode=sum%11;
    return validate[mode];
  }
  
  public static void main(String[] args){
    Id18 test=new Id18();
    System.out.println("該身份證驗(yàn)證碼:"+test.getValidateCode("14230219700101101"));  //該身份證校驗(yàn)碼:3
  }
}

(三)說(shuō)明

1.程序可以根據(jù)已有的17位數(shù)字本體碼,獲取對(duì)應(yīng)的驗(yàn)證碼。

2.該程序可以剔除驗(yàn)證碼不正確的身份證號(hào)碼。

3.15位的身份證出生年份采用年份后2位,沒有最后1位校驗(yàn)碼。

4.完整的身份證18位,最后一位校驗(yàn)位可能是非數(shù)字。我們的一個(gè)項(xiàng)目,數(shù)據(jù)庫(kù)保存前17位數(shù)字,這樣對(duì)應(yīng)一些SQL語(yǔ)句(比如inner join)有加速作用的?。?!

相關(guān)文章

  • Spring JPA之save方法示例詳解

    Spring JPA之save方法示例詳解

    這篇文章主要為大家介紹了Spring JPA之save方法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-04-04
  • Java 異步線程監(jiān)聽與結(jié)果回調(diào)及異常捕獲總結(jié)分析

    Java 異步線程監(jiān)聽與結(jié)果回調(diào)及異常捕獲總結(jié)分析

    異常是程序之中導(dǎo)致程序中斷的一種指令流,異常一旦出現(xiàn)并且沒有進(jìn)行合理處理的話,那么程序就將中斷執(zhí)行,這篇文章綜合介紹了異步線程監(jiān)聽與結(jié)果回調(diào)及異常捕獲
    2021-11-11
  • java 中設(shè)計(jì)模式(值對(duì)象)的實(shí)例詳解

    java 中設(shè)計(jì)模式(值對(duì)象)的實(shí)例詳解

    這篇文章主要介紹了java 中設(shè)計(jì)模式(值對(duì)象)的實(shí)例詳解的相關(guān)資料,希望通過(guò)本文能幫助到大家,需要的朋友可以參考下
    2017-09-09
  • JUnit5中的參數(shù)化測(cè)試實(shí)現(xiàn)

    JUnit5中的參數(shù)化測(cè)試實(shí)現(xiàn)

    參數(shù)化測(cè)試使得我們可以使用不同的參數(shù)運(yùn)行同一個(gè)測(cè)試方法,從而減少我們編寫測(cè)試用例的工作量,本文主要介紹了JUnit5中的參數(shù)化測(cè)試實(shí)現(xiàn),感興趣的可以了解一下
    2023-05-05
  • 詳談Spring框架之事務(wù)管理

    詳談Spring框架之事務(wù)管理

    下面小編就為大家?guī)?lái)一篇詳談Spring框架之事務(wù)管理。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-09-09
  • Java日常練習(xí)題,每天進(jìn)步一點(diǎn)點(diǎn)(7)

    Java日常練習(xí)題,每天進(jìn)步一點(diǎn)點(diǎn)(7)

    下面小編就為大家?guī)?lái)一篇Java基礎(chǔ)的幾道練習(xí)題(分享)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧,希望可以幫到你
    2021-07-07
  • Java中Tuple的功能及使用詳解

    Java中Tuple的功能及使用詳解

    Java中的Tuple是一種非常有用的數(shù)據(jù)結(jié)構(gòu),它可以讓開發(fā)者在處理多個(gè)數(shù)據(jù)元素時(shí)更加方便和高效,通過(guò)Tuple,我們可以將多個(gè)變量打包成一個(gè)對(duì)象,從而減少了代碼量,提高了代碼可讀性,這篇文章主要介紹了Java中Tuple的功能及使用場(chǎng)景,需要的朋友可以參考下
    2024-01-01
  • Spring?Boot?Admin?監(jiān)控指標(biāo)接入Grafana可視化的實(shí)例詳解

    Spring?Boot?Admin?監(jiān)控指標(biāo)接入Grafana可視化的實(shí)例詳解

    Spring Boot Admin2 自帶有部分監(jiān)控圖表,如圖,有線程、內(nèi)存Heap和內(nèi)存Non Heap,這篇文章主要介紹了Spring?Boot?Admin?監(jiān)控指標(biāo)接入Grafana可視化,需要的朋友可以參考下
    2022-11-11
  • Java如何獲取靜態(tài)資源文件路徑

    Java如何獲取靜態(tài)資源文件路徑

    這篇文章主要介紹了Java如何獲取靜態(tài)資源文件路徑問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • 新手小白入門必學(xué)JAVA面向?qū)ο笾鄳B(tài)

    新手小白入門必學(xué)JAVA面向?qū)ο笾鄳B(tài)

    說(shuō)到多態(tài),一定離不開其它兩大特性:封裝和繼承,下面這篇文章主要給大家介紹了關(guān)于新手小白入門必學(xué)JAVA面向?qū)ο笾鄳B(tài)的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-02-02

最新評(píng)論