身份证号码信息(含末尾数验证)
- 格式:xlsx
- 大小:9.86 KB
- 文档页数:2
身份证号码计数法计算公式身份证号码是每个人在出生时就被赋予的一串数字,它不仅仅是一个身份的标识,更是一个包含着丰富信息的编码。
在中国,身份证号码是由18位数字和一个校验位组成的,其中包含了个人的出生年月日、性别、地区等信息。
而身份证号码计数法计算公式则是一种根据身份证号码的特定规律来进行计算的方法,通过这种方法可以得到一些有趣的结果。
首先,我们来看一下身份证号码的结构。
身份证号码由18位数字和一个校验位组成,其中前6位代表了个人的地区信息,接着的8位代表了出生年月日,然后是3位顺序码和1位校验位。
根据这个结构,我们可以得到身份证号码计数法计算公式的基本公式:N = (S + M) mod 11。
其中,N代表校验位的值,S代表身份证号码前17位数字的加权和,M代表S 对11取模得到的余数。
接下来,我们来看一下具体的计算方法。
首先,我们需要对身份证号码的前17位数字进行加权求和,具体的加权系数如下:1 02 9 8 7 6 5 43 2。
然后,将身份证号码的前17位数字与对应的加权系数相乘,并将结果相加,得到S的值。
接着,将S对11取模得到的余数就是M的值。
最后,将S和M相加并对11取模,得到的结果就是校验位N的值。
通过这个计算方法,我们可以得到身份证号码的校验位值,并且可以验证身份证号码的有效性。
同时,我们也可以利用这个计算方法来进行一些有趣的计算,比如计算身份证号码的奇偶性、出生年月日的特殊性等等。
除此之外,身份证号码计数法计算公式还可以用来进行一些统计分析。
比如,我们可以统计某个地区的身份证号码的校验位分布情况,从而了解这个地区的人口分布特点。
我们还可以统计某个年龄段的人群的身份证号码的校验位分布情况,从而了解这个年龄段的人群的身份证号码的特点。
通过这种统计分析,我们可以更深入地了解人口的结构和特点。
总之,身份证号码计数法计算公式是一种根据身份证号码的特定规律来进行计算的方法,通过这种方法可以得到一些有趣的结果,并且可以用来进行一些统计分析。
身份证号码辨别所在省份36 省份证号大全身份证号码辨别所在省份36 省份证号大全话题:省份证号大全计算方法数字北京110 河北省130 山西省140 内蒙古自治区150 辽宁210 吉林220 黑龙江230 上海市310 江苏320 浙江330 安徽340 福建350 江西360 山东370 河南410 湖北420 湖南430 广东440 广西450 海南46 重庆市500 四川510 贵州520 云南530 西藏540 陕西610 甘肃620 青海630 宁夏640 新疆650身份证号码辨别所在省份 ,转自163微博身份证号码辨别所在省份一、身份证号码执行标准:18位身份证标准在国家质量技术监督局于1999年7月1日实施的GB11643-1999《公民身份号码》。
GB11643-1999《公民身份号码》为GB11643-1989《社会保障号码》的修订版,其中指出将原标准名称“社会保障号码”更名为“公民身份号码”,另外GB11643-1999《公民身份号码》从实施之日起代替GB11643-1989。
二、编码规则:公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成。
排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位校验码,可以用字母表示如为ABCDEFYYYYMMDDXXXR。
其含义如下:1. 地址码(ABCDEF):表示编码对象常住户口所在县(市、旗、区)的行政区划代码,按GB/T2260的规定执行。
2. 出生日期码(YYYYMMDD):表示编码对象出生的年、月、日,按GB/T7408的规定执行,年、月、日分别用4位、2位(不足两位加0)、2(同上)位数字表示,之间不用分隔符。
3. 顺序码(XXX):表示在同一地址码所标识的区域范围内,对同年、同月、同日出生的人编定的顺序号,顺序码的奇数分配给男性,偶数分配给女性。
4(校验码(R),一位数字,通过前17位数字根据一定计算得出。
⾝份证号码最后⼀位校检码的计算公式我国现⾏使⽤公民⾝份证号码有两种尊循两个国家标准,〖GB 11643-1989〗和〖GB 11643-1999〗。
〖GB 11643-1989〗中规定的是15位⾝份证号码:排列顺序从左⾄右依次为:六位数字地址码,六位数字出⽣⽇期码,三位数字顺序码,其中出⽣⽇期码不包含世纪数。
〖GB 11643-1999〗中规定的是18位⾝份证号码:公民⾝份号码是特征组合码,由⼗七位数字本体码和⼀位数字校验码组成。
排列顺序从左⾄右依次为:六位数字地址码,⼋位数字出⽣⽇期码,三位数字顺序码和⼀位数字校验码。
地址码表⽰编码对象常住户⼝所在县(市、旗、区)的⾏政区划代码。
⽣⽇期码表⽰编码对象出⽣的年、⽉、⽇,其中年份⽤四位数字表⽰,年、⽉、⽇之间不⽤分隔符。
顺序码表⽰同⼀地址码所标识的区域范围内,对同年、⽉、⽇出⽣的⼈员编定的顺序号。
顺序码的奇数分给男性,偶数分给⼥性。
校验码是根据前⾯⼗七位数字码,按照ISO 7064:1983.MOD 11-2校验码计算出来的检验码。
为什么除11,在于计算校验码时的函数。
请看下边的函数:公式如下:∑(a[i]*W[i]) mod 11 ( i = 2, 3, ..., 18 ) (1)"*" 表⽰乘号i--------表⽰⾝份证号码每⼀位的序号,从右⾄左,最左侧为18,最右侧为1。
a[i]-----表⽰⾝份证号码第 i 位上的号码W[i]-----表⽰第 i 位上的权值 W[i] = 2^(i-1) mod 11计算公式 (1) 令结果为 R根据下表找出 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。
~(重点看清楚)~ 这个函数展开就是:a[1]*W[1]+a[2]*W[2]+……+a[18]*W[18]=?mod11=“?对11求模”如:22mod11=2 23mod22也是2 33mod11=3就是出于后⾯那个数,只取商不取余数所以从函数和其展开式来看要对11求模,所⼀要除11以下为列⼦:*此函数功能:输⼊的15位或17位或18位的⾝份证号,返回校验后的最后⼀位**-----------------------------FUNCTION sfzjyParameters cIDDO CASECASE LEN(ALLTRIM(cID)) = 15cID = STUFF(ALLTRIM(cID),7,0,"19")CASE LEN(ALLTRIM(cID)) = 18 OR LEN(ALLTRIM(cID)) = 17cID =LEFT(ALLTRIM(cID),17)OTHERWISERETURN .F.ENDCASEIf Len(ALLTRIM(cID))#17Return .f.EndifnSum=Val(SubStr(cID,1,1)) * 7 ;+ Val(SubStr(cID,2,1)) * 9 ;+ Val(SubStr(cID,3,1)) * 10 ;+ Val(SubStr(cID,4,1)) * 5 ;+ Val(SubStr(cID,5,1)) * 8 ;+ Val(SubStr(cID,6,1)) * 4 ;+ Val(SubStr(cID,7,1)) * 2 ;+ Val(SubStr(cID,8,1)) * 1 ;+ Val(SubStr(cID,9,1)) * 6 ;+ Val(SubStr(cID,10,1)) * 3 ;+ Val(SubStr(cID,11,1)) * 7 ;+ Val(SubStr(cID,12,1)) * 9 ;+ Val(SubStr(cID,13,1)) * 10 ;+ Val(SubStr(cID,14,1)) * 5 ;+ Val(SubStr(cID,15,1)) * 8 ;+ Val(SubStr(cID,16,1)) * 4 ;+ Val(SubStr(cID,17,1)) * 2*计算校验位check_number=INT((12-nSum % 11)%11)If check_number=10check_number='X'EndifReturn check_numberEndfunc*-----------------------------**此函数功能:输⼊的15位或18位⾝份证号,返回正确的18位的⾝份证号。
⾝份证校验码计算公式及实例计算校验码是识别⼀个⾝份证号码是否真实存在的重要的依据。
那我们要如何通过校验码来判断⼀个⾝份证号码是否真实的呢?校验码如何判断⾝份证号码真伪呢?我们来看看具体计划过程。
第⼀步:将⾝份证号码的第1位数字与7相乘;将⾝份证号码的第2位数字与9相乘;将⾝份证号码的第3位数字与10相乘;将⾝份证号码的第4位数字与5相乘;将⾝份证号码的第5位数字与8相乘;将⾝份证号码的第6位数字与4相乘;将⾝份证号码的第7位数字与2相乘;将⾝份证号码的第8位数字与1相乘;将⾝份证号码的第9位数字与6相乘;将⾝份证号码的第10位数字与3相乘;将⾝份证号码的第11位数字与7相乘;将⾝份证号码的第12位数字与9相乘;将⾝份证号码的第13位数字与10相乘;将⾝份证号码的第14位数字与5相乘;将⾝份证号码的第15位数字与8相乘;将⾝份证号码的第16位数字与4相乘;将⾝份证号码的第17位数字与2相乘。
第⼆步:将第⼀步⾝份证号码1~17位相乘的结果求和,全部加起来。
第三步:⽤第⼆步计算出来的结果除以11,这样就会出现余数为0,余数为1,余数为2,余数为3,余数为4,余数为5,余数为6,余数为7,余数为8,余数为9,余数为10共11种可能性。
第四步:如果余数为0,那对应的最后⼀位⾝份证的号码为1;如果余数为1,那对应的最后⼀位⾝份证的号码为0;如果余数为2,那对应的最后⼀位⾝份证的号码为X;如果余数为3,那对应的最后⼀位⾝份证的号码为9;如果余数为4,那对应的最后⼀位⾝份证的号码为8;如果余数为5,那对应的最后⼀位⾝份证的号码为7;如果余数为6,那对应的最后⼀位⾝份证的号码为6;如果余数为7,那对应的最后⼀位⾝份证的号码为5;如果余数为8,那对应的最后⼀位⾝份证的号码为4;如果余数为9,那对应的最后⼀位⾝份证的号码为3;如果余数为10,那对应的最后⼀位⾝份证的号码为2。
⽐如:⾝份证号码 432831************ 这个⾝份证是否是有效⾝份证号码呢?请看校验码分析。
成年身份证号码大全篇一:身份证号码大全下面这些是福350000福建省建所有县市身份证号码前6位。
350100福州市350101市辖区350102鼓楼区350103台江区350104仓山区350105马尾区350111晋安区350121闽侯县350122连江县350123罗源县350124闽清县350125永泰县350128平潭县350181福清市350182长乐市350200厦门市350201市辖区350203思明区350205海沧区350206湖里区350211集美区350212同安区350213翔安区350300莆田市350301市辖区350302城厢区350303涵江区350304荔城区350305秀屿区350322仙游县350400三明市350401市辖区350402梅列区350403三元区350421明溪县350423清流县350424宁化县350425大田县350426尤溪县350427沙县350428将乐县350429泰宁县350430建宁县350481永安市350500泉州市350501市辖区350502鲤城区350503丰泽区350504洛江区350505泉港区350521惠安县350524安溪县350525永春县350526德化县350527金门县350581石狮市350582晋江市350583南安市350600漳州市350601市辖区350602芗城区350603龙文区350622云霄县350623漳浦县350624诏安县350625长泰县350626东山县350627南靖县350628平和县350629华安县350681龙海市350700南平市350701市辖区350702延平区350721顺昌县350722浦城县350723光泽县350724松溪县350725政和县350781邵武市350782武夷山市350783建瓯市350784建阳市350800龙岩市350801市辖区350802新罗区350821长汀县350822永定县350823上杭县350824武平县350825连城县350881漳平市350900宁德市350901市辖区350902蕉城区350921霞浦县350922古田县350923屏南县350924寿宁县350925周宁县350926柘荣县350981福安市350982福鼎市篇二:广东省身份证号码大全44广东省4401广州市440102东山区440103荔湾区440104越秀区440105海珠区440106天河区440107芳村区440111白云区440112黄埔区440181番禺市440182花都市440183增城市440184从化市440199其它4402韶关市440202北江区440203武江区440204浈江区440221曲江县440222始兴县440223南雄县440224仁化县440229翁源县440232乳源瑶族自治县440233新丰县440281乐昌市440299其它4403深圳市440303罗湖区440304福田区440305南山区440306宝安区440307龙岗。
[标签:标题]篇一:身份证号码大全下面这些是福350000 福建省建所有县市身份证号码前6位。
350100 福州市350101 市辖区350102 鼓楼区350103 台江区350104 仓山区350105 马尾区350111 晋安区350121 闽侯县350122 连江县350123 罗源县350124 闽清县350125 永泰县350128 平潭县350181 福清市350182 长乐市350200 厦门市350201 市辖区350203 思明区350205 海沧区350206 湖里区350211 集美区350212 同安区350213 翔安区350300 莆田市350301 市辖区350302 城厢区350303 涵江区350304 荔城区350305 秀屿区350322 仙游县350400 三明市350401 市辖区350402 梅列区350403 三元区350421 明溪县350423 清流县 350424 宁化县 350425 大田县 350426 尤溪县 350427 沙县 350428 将乐县 350429 泰宁县 350430 建宁县 350481 永安市 350500 泉州市 350501 市辖区 350502 鲤城区 350503 丰泽区 350504 洛江区 350505 泉港区 350521 惠安县 350524 安溪县 350525 永春县 350526 德化县 350527 金门县350581 石狮市 350582 晋江市 350583 南安市 350600 漳州市 350601 市辖区 350602 芗城区 350603 龙文区 350622 云霄县 350623 漳浦县 350624 诏安县 350625 长泰县 350626 东山县 350627 南靖县350628 平和县 350629 华安县 350681 龙海市350700 南平市 350701 市辖区 350702 延平区 350721 顺昌县 350722 浦城县 350723 光泽县 350724 松溪县 350725 政和县 350781 邵武市 350782 武夷山市 350783 建瓯市 350784 建阳市 350800 龙岩市350801 市辖区 350802 新罗区 350821 长汀县 350822 永定县 350823 上杭县 350824 武平县 350825 连城县 350881 漳平市 350900 宁德市 350901 市辖区 350902 蕉城区 350921 霞浦县 350922 古田县350923 屏南县 350924 寿宁县 350925 周宁县 350926 柘荣县 350981 福安市 350982 福鼎市篇二:广东省身份证号码大全44广东省4401广州市440102东山区440103荔湾区440104越秀区440105海珠区440106天河区440107芳村区440111白云区440112黄埔区440181番禺市440182花都市440183增城市440184从化市440199其它4402韶关市440202北江区440203武江区440204浈江区440221曲江县440222始兴县440223南雄县440224仁化县440229翁源县440232乳源瑶族自治县440233新丰县440281乐昌市440299其它4403深圳市440303罗湖区440304福田区440305南山区440306宝安区440307龙岗区440399其它4404珠海市440402香洲区440421斗门县440499其它440506达濠区440507龙湖区440508金园区440509升平区440510河浦区440523南澳县440582潮阳市440583澄海市440599其它篇三:身份证号码前6位查询大全公民身份号码是由17位数字码和1位校验码组成。
JS-计算⾝份证校验码(最后⼀位)<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>Document</title><style>#msg{color: red;}</style></head><body>⾝份证号:<input id="id-card" type="text">(前17位)<br>(校验位)最后⼀位为:<span id="msg"></span><span id="check-digit"></span><br><button onclick="calculate()">计算</button><br><script>"use strict";// 前17位每项的系数let coefficient = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];// 除11取余的结果对应的校验位(最后⼀位)的值let checkDigitMap = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'];function calculate(){var idCard = document.querySelector("#id-card");var checkDigit = document.querySelector("#check-digit");var msg = document.querySelector("#msg");var sum = 0;checkDigit.innerHTML = msg.innerHTML = "";if(idCard.value.length < 17){msg.innerHTML = "⾄少输⼊⾝份证前17位";return}for (var i = 0; i < 17; i++) {sum += idCard.value[i] * coefficient[i];}checkDigit.innerHTML = checkDigitMap[sum % 11];}</script></body></html>。
⾝份证号正则校验(js校验+JAVA校验)js校验⾝份证号【15位和18位】[javascript] view plaincopyprint?function scCard(){var scType=document.getElementById("sc_card_type").value;if(scType=="1"){var scCard=document.getElementById("sc_card_num").value;if(scCard.length!=0){if(!checkCard(scCard)){$("#errorTips").html("⾝份证号码格式错误");}else{$("#errorTips").html("");}}}return false;}//function checkidno(obj) {var vcity={ 11:"北京",12:"天津",13:"河北",14:"⼭西",15:"内蒙古",21:"辽宁",22:"吉林",23:"⿊龙江",31:"上海",32:"江苏",33:"浙江",34:"安徽",35:"福建",36:"江西",37:"⼭东",41:"河南",42:"湖北",43:"湖南",44:"⼴东",45:"⼴西",46:"海南",50:"重庆",51:"四川",52:"贵州",53:"云南",54:"西藏",61:"陕西",62:"⽢肃",63:"青海",64:"宁夏",65:"新疆",71:"台湾",81:"⾹港",82:"澳门",91:"国外"};checkCard = function(obj){//var card = document.getElementById('card_no').value;//是否为空// if(card === '')// {// return false;//}//校验长度,类型if(isCardNo(obj) === false){return false;}//检查省份if(checkProvince(obj) === false){return false;}//校验⽣⽇if(checkBirthday(obj) === false){return false;}//检验位的检测if(checkParity(obj) === false){return false;}return true;};//检查号码是否符合规范,包括长度,类型isCardNo = function(obj){//⾝份证号码为15位或者18位,15位时全为数字,18位前17位为数字,最后⼀位是校验位,可能为数字或字符Xvar reg = /(^\d{15}$)|(^\d{17}(\d|X)$)/;if(reg.test(obj) === false){return false;}return true;};//取⾝份证前两位,校验省份checkProvince = function(obj)var province = obj.substr(0,2);if(vcity[province] == undefined){return false;}return true;};//检查⽣⽇是否正确checkBirthday = function(obj){var len = obj.length;//⾝份证15位时,次序为省(3位)市(3位)年(2位)⽉(2位)⽇(2位)校验位(3位),皆为数字if(len == '15'){var re_fifteen = /^(\d{6})(\d{2})(\d{2})(\d{2})(\d{3})$/;var arr_data = obj.match(re_fifteen);var year = arr_data[2];var month = arr_data[3];var day = arr_data[4];var birthday = new Date('19'+year+'/'+month+'/'+day);return verifyBirthday('19'+year,month,day,birthday);}//⾝份证18位时,次序为省(3位)市(3位)年(4位)⽉(2位)⽇(2位)校验位(4位),校验位末尾可能为X if(len == '18'){var re_eighteen = /^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)$/;var arr_data = obj.match(re_eighteen);var year = arr_data[2];var month = arr_data[3];var day = arr_data[4];var birthday = new Date(year+'/'+month+'/'+day);return verifyBirthday(year,month,day,birthday);}return false;};//校验⽇期verifyBirthday = function(year,month,day,birthday){var now = new Date();var now_year = now.getFullYear();//年⽉⽇是否合理if(birthday.getFullYear() == year && (birthday.getMonth() + 1) == month && birthday.getDate() == day){//判断年份的范围(3岁到100岁之间)var time = now_year - year;if(time >= 0 && time <= 130){return true;}return false;}return false;};//校验位的检测checkParity = function(obj){//15位转18位obj = changeFivteenToEighteen(obj);var len = obj.length;if(len == '18'){var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);var arrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');var cardTemp = 0, i, valnum;for(i = 0; i < 17; i ++){cardTemp += obj.substr(i, 1) * arrInt[i];}valnum = arrCh[cardTemp % 11];if (valnum == obj.substr(17, 1)){return true;}return false;}return false;};//15位转18位⾝份证号changeFivteenToEighteen = function(obj)if(obj.length == '15'){var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);var arrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');var cardTemp = 0, i;obj = obj.substr(0, 6) + '19' + obj.substr(6, obj.length - 6);for(i = 0; i < 17; i ++){cardTemp += obj.substr(i, 1) * arrInt[i];}obj += arrCh[cardTemp % 11];return obj;}return obj;};JAVA校验package com.ebiz.base.utils;import java.text.SimpleDateFormat;import java.util.Date;import java.util.GregorianCalendar;import java.util.List;import java.util.regex.Matcher;import java.util.regex.Pattern;import com.ebiz.base.consts.BaseConst;import com.ebiz.base.consts.ConfigConst;import com.ebiz.base.consts.ExceptionConst;import com.ebiz.framework.util.date.DateUtil;import com.ebiz.framework.util.date.DateValidate;import com.ebiz.framework.util.validate.ValidateUtil;import puta.FndPageRule;import com.hp.hpl.sparta.ParseException;public class CheckIdentificationUtil {public static void main(String[] args) {System.out.println(idCardValidate("370802*********"));}/**功能 18位⾝份证的校验* @param idStr* @return ParseException 1001* @throws Exception* @throws ParseException* @throws NumberFormatException* @throws java.text.ParseException* @author wangming*/public static String idCardValidate(String idStr) {if (idStr == null || ( idStr.length() != 15 && idStr.length() != 18 )) {return BaseConst.PUBLIC_RESPONSE_FAIL;}if( idStr.length() == 15 ){StringBuilder sb = new StringBuilder();sb.append(idStr.substring(0, 6)).append("19").append(idStr.substring(6));try {sb.append(getVerifyCode(sb.toString()));idStr = sb.toString();} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}System.out.println(sb);}String errorInfo = "";// 记录错误信息//取模映射String[] valCodeArr = { "1", "0", "X", "9", "8", "7", "6", "5", "4","3", "2" };//加权String[] wi = { "7", "9", "10", "5", "8", "4", "2", "1", "6", "3", "7","9", "10", "5", "8", "4", "2" }; String ai =idStr.substring(0, 17);if (ValidateUtil.isDigit(ai) == false) {errorInfo = ExceptionConst.PAXINFO_CARD_ISNOTNUM;return errorInfo;}// ================ 出⽣年⽉是否有效 ================String strYear = ai.substring(6, 10);// 年份String strMonth = ai.substring(10, 12);// ⽉份String strDay = ai.substring(12, 14);// ⽉份if (DateValidate.isStrDate(ai.substring(6,14))== false) {errorInfo = ExceptionConst.PAXINFO_CARD_BIRTHDAY_OVER;//"⾝份证⽣⽇⽆效。