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

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

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
新旧身份证合法性验证及相互转换算法精选

新旧身份证合法性验证及相互转换算法.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,最右侧为1。   a[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 10    C: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=10 // 最小的行政区划码 private static final int minCode = 150000; // 最大的行政区划码 private static final int maxCode = 700000; // 旧身份证号码 //

文档评论(0)

pfenejiarz + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档