91偷拍精品一区二区三区_欧美亚洲免费在线_日本不卡高清视频_中文字幕无码一区二区视频_日韩毛片无码一区二区三区,将夜 猫腻 小说,欢乐颂第二季,如何发布网络小说

?
    開發(fā)技術(shù) / Technology

    身份證號碼驗證算法

    日期:2015年3月16日  作者:zhjw  來源:互聯(lián)網(wǎng)    點擊:928

    身份證號碼驗證算法

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

    (一)18身份證號碼的結(jié)構(gòu)
      公民身份號碼是特征組合碼,由十七位數(shù)字本體碼和一位校驗碼組成。

      排列順序從左至右依次為:六位數(shù)字地址碼,八位數(shù)字出生日期碼,三位數(shù)字順序碼和一位校驗碼。 
    1、地址碼 
      
    表示編碼對象常住戶口所在縣(市、旗、區(qū))的行政區(qū)域劃分代碼,按GB/T2260的規(guī)定執(zhí)行。
    2、出生日期碼 
      表示編碼對象出生的年、月、日,按GB/T7408的規(guī)定執(zhí)行,年、月、日代碼之間不用分隔符。 
    3、順序碼 
      
    表示在同一地址碼所標(biāo)識的區(qū)域范圍內(nèi),對同年、同月、同日出生的人編定的順序號,順序碼的奇數(shù)分配給男性,偶數(shù)分配給女性 
    4、校驗碼計算步驟

    (1)十七位數(shù)字本體碼加權(quán)求和公式 
      S = Sum(Ai * Wi), i = 0, ... , 16 ,先對前17位數(shù)字的權(quán)求和 
      Ai:表示第i位置上的身份證號碼數(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)計算模 
      
    Y = mod(S, 11)

    (3)根據(jù)模,查找得到對應(yīng)的校驗碼 
      
    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ù)字本體碼獲取最后一位校驗碼程序?qū)嵗?/strong>

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

     

    (三)說明

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

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

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

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

    主站蜘蛛池模板: 石林| 砚山县| 昌乐县| 宝丰县| 宜兴市| 剑川县| 博兴县| 珠海市| 西贡区| 三门县| 黑山县| 黑龙江省| 城市| 武强县| 化德县| 阿勒泰市| 岳普湖县| 静乐县| 溧阳市| 礼泉县| 商城县| 南郑县| 阿坝| 榆社县| 汨罗市| 定兴县| 绥化市| 涡阳县| 广饶县| 都昌县| 苍南县| 大悟县| 舒城县| 云阳县| 南丰县| 乌鲁木齐县| 霍州市| 板桥市| 静海县| 米泉市| 南华县|