最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

(一)18身份證號碼的結構

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

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

1、地址碼

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

2、出生日期碼

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

3、順序碼

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

4、校驗碼計算步驟

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

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

(2)計算模

  Y = mod(S, 11)

(3)根據(jù)模,查找得到對應的校驗碼

  Y: 0 1 2 3 4 5 6 7 8 9 10
  校驗碼: 1 0 X 9 8 7 6 5 4 3 2

(二)根據(jù)17位數(shù)字本體碼獲取最后一位校驗碼程序實例

public class Id18 {
  int[] weight={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};  //十七位數(shù)字本體碼權重
  char[] validate={ '1','0','X','9','8','7','6','5','4','3','2'};  //mod11,對應校驗碼字符值  
  
  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("該身份證驗證碼:"+test.getValidateCode("14230219700101101"));  //該身份證校驗碼:3
  }
}

(三)說明

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

2.該程序可以剔除驗證碼不正確的身份證號碼。

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

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

相關文章

  • 老生常談java中的fail-fast機制

    老生常談java中的fail-fast機制

    下面小編就為大家?guī)硪黄仙U刯ava中的fail-fast機制。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08
  • SpringBoot中@Conditional注解的使用

    SpringBoot中@Conditional注解的使用

    這篇文章主要介紹了SpringBoot中@Conditional注解的使用,@Conditional注解是一個條件裝配注解,主要用于限制@Bean注解在什么時候才生效,以指定的條件形式控制bean的創(chuàng)建,需要的朋友可以參考下
    2024-01-01
  • Spring?Boot?+?Mybatis?Plus實現(xiàn)樹狀菜單的方法

    Spring?Boot?+?Mybatis?Plus實現(xiàn)樹狀菜單的方法

    這篇文章主要介紹了Spring?Boot?+?Mybatis?Plus實現(xiàn)樹狀菜單,包括實體類中添加子菜單列表和集合及構建菜單樹的詳細代碼,代碼簡單易懂,需要的朋友可以參考下
    2021-12-12
  • 詳解Java8 Collect收集Stream的方法

    詳解Java8 Collect收集Stream的方法

    這篇文章主要介紹了Java8-Collect收集Stream的方法,提到了收集器的作用,連接收集器的方法,需要的朋友可以參考下
    2018-04-04
  • springboot的LogbackLoggingSystem配置加載流程解析

    springboot的LogbackLoggingSystem配置加載流程解析

    這篇文章主要介紹了springboot的LogbackLoggingSystem配置加載流程源碼分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-11-11
  • MAVEN的安裝配置與IDEA整合超詳細教程

    MAVEN的安裝配置與IDEA整合超詳細教程

    這篇文章給大家介紹了MAVEN的安裝,配置與IDEA整合方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,感興趣的朋友跟隨小編一起看看吧
    2021-02-02
  • java中各種對象的比較方法

    java中各種對象的比較方法

    Java對象的比較是初學者不易掌握的,下面這篇文章主要給大家介紹了關于java中各種對象的比較方法,文中通過實例代碼以及圖文介紹的非常詳細,需要的朋友可以參考下
    2023-04-04
  • 關于RestTemplate中的Get請求

    關于RestTemplate中的Get請求

    這篇文章主要介紹了關于RestTemplate中的Get請求,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • SpringBoot全局配置long轉String丟失精度的問題解決

    SpringBoot全局配置long轉String丟失精度的問題解決

    web項目中,Java后端傳過來的Long/long類型,前端JS接收會丟失精度。那么應該如何解決,本文就來介紹一下幾種方法,感興趣的可以了解一下
    2021-08-08
  • java 根據(jù)漢字生成拼音全拼或拼音首字母的示例

    java 根據(jù)漢字生成拼音全拼或拼音首字母的示例

    這篇文章主要介紹了java 根據(jù)漢字生成拼音全拼或拼音首字母的示例,幫助大家更好的利用Java處理數(shù)據(jù),感興趣的朋友可以了解下
    2020-11-11

最新評論

庆元县| 黄冈市| 喀什市| 项城市| 淳安县| 朝阳区| 娄底市| 洮南市| 依兰县| 江安县| 澳门| 开江县| 诸城市| 江油市| 黔江区| 南川市| 阳东县| 长葛市| 姜堰市| 乌拉特后旗| 邻水| 洪雅县| 南靖县| 建瓯市| 罗城| 沾益县| 兴国县| 容城县| 德清县| 永昌县| 松溪县| 张家川| 望城县| 桑植县| 道真| 明光市| 沅陵县| 济源市| 高要市| 怀远县| 永修县|