好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

新旧身份证合法性验证及相互转换算法.doc

7页
  • 卖家[上传人]:飞***
  • 文档编号:5364533
  • 上传时间:2017-08-30
  • 文档格式:DOC
  • 文档大小:41KB
  • / 7 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 新旧身份证合法性验证及相互转换算法.txt 遇事潇洒一点,看世糊涂一点相亲是经销,恋爱叫直销,抛绣球招亲则为围标没有准备请不要开始,没有能力请不要承诺爱情这东西,没得到可能是缺憾,不表白就会有遗憾,可是如果自不量力,就只能抱憾了新旧身份证合法性验证及相互转换算法——谨以此文献给共事 3 年即将离职的 PPL作者:成晓旭前天,看到 PPL 在一个需要网站上注册,但该网站要求输入一个身份证号码,并且随便输入一个还不行:对方还要验证输入身份证的合法性,所以,烦得 PPL 在网上到处去找基于此目前,特别在网上收集身份证相关的资料,整理成文,作为给 PPL 饯行的礼物之一,公布于我的 Blog也预祝 PPL:“找份好工作,找个好老婆!”1、关于中国居民身份证的常识:我国现行使用公民身份证号码有两种尊循两个国家标准,〖GB 11643-1989〗和〖GB 11643-1999〗〖GB 11643-1989〗中规定的是 15 位身份证号码:排列顺序从左至右依次为:六位数字地址码,六位数字出生日期码,三位数字顺序码,其中出生日期码不包含世纪数〖GB 11643-1999〗中规定的是 18 位身份证号码:公民身份号码是特征组合码,由十七位数字本体码和一位数字校验码组成。

      排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码地址码:表示编码对象常住户口所在县(市、旗、区)的行政区划代码出生日期码:表示编码对象出生的年、月、日,其中年份用四位数字表示,年、月、日之间不用分隔符顺序码:表示同一地址码所标识的区域范围内,对同年、同月、同日出生的人员编定的顺序号顺序码的奇数分给男性,偶数分给女性校验码:是根据前面十七位数字码,按照 ISO 7064:1983.MOD 11-2 校验码计算出来的检验码关于身份证号码最后一位的校验码的算法如下:∑(a[i]*W[i]) mod 11 ( i = 2, 3, ..., 18 )"*" : 表示乘号i: 表示身份证号码每一位的序号,从右至左,最左侧为 18,最右侧为 1a[i]: 表示身份证号码第 i 位上的号码W[i]: 表示第 i 位上的权值 W[i] = 2^(i-1) mod 11设:R = ∑(a[i]*W[i]) mod 11 ( i = 2, 3, ..., 18 )C = 身份证号码的校验码则 R 和 C 之间的对应关系如下表:R:0 1 2 3 4 5 6 7 8 9 10C:1 0 X 9 8 7 6 5 4 3 2由此看出 X 就是 10,罗马数字中的 10 就是 X,所以在新标准的身份证号码中可能含有非数字的字母 X。

      2、算法:/** *//*** */package cxx.sourceCode.base;import java.text.DateFormat;import java.text.NumberFormat;import java.text.ParseException;import java.util.Date;import java.util.Random;/** *//*** @author 成晓旭**/public class Identity ...{// 位权值数组private static byte[] Wi=new byte[17];// 身份证前部分字符数private static final byte fPart = 6;// 身份证算法求模关键值private static final byte fMod = 11;// 旧身份证长度private static final byte oldIDLen = 15;// 新身份证长度private static final byte newIDLen = 18;// 新身份证年份标志private static final String yearFlag = "19";// 校验码串 private static final String CheckCode="10X98765432"; // 最小的行政区划码private static final int minCode = 150000;// 最大的行政区划码private static final int maxCode = 700000;// 旧身份证号码// private String oldIDCard="";// 新身份证号码// private String newIDCard="";// 地区及编码//private String Area[][2] = private static void setWiBuffer()...{for(int i=0;i

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.