<script language="javascript">
/**
1、号码的结构
公民身份号码是特征组合码,由十七位数字本体码和一位校
验码组成。排列顺序从左至右依次为:六位数字地址码,八位数
字出生日期码,三位数字顺序码和一位数字校验码。
2、地址码
表示编码对象常住户口所在县(市、旗、区)的行政区划代码,
按GB/T2260的规定执行。
3、出生日期码
表示编码对象出生的年、月、日,按GB/T7408的规定执行,
年、月、日代码之间不用分隔符。
4、顺序码
表示在同一地址码所标识的区域范围内,对同年、同月、同
日出生的人编定的顺序号,顺序码的奇数分配给男性,偶数分配
给女性。
5、校验码
(1)十七位数字本体码加权求和公式
S = Ai * Wi, i = 2, , 18
Y = mod(S, 11)
i: 表示号码字符从右至左包括校验码字符在内的位置序号
Ai:表示第i位置上的身份证号码字符值
Wi:表示第i位置上的加权因子
i: 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
Wi: 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 1
(2)校验码字符值的计算
Y: 0 1 2 3 4 5 6 7 8 9 10
校验码: 1 0 X 9 8 7 6 5 4 3 2
四、举例如下:
北京市朝阳区: 11010519491231002X
广东省汕头市: 440524188001010014
15位的身份证号
dddddd yymmdd xx p
18位的身份证号
dddddd yyyymmdd xx p y
其中dddddd为地址码(省地县三级)18位中的和15位中的不完全相同
yyyymmdd yymmdd 为出生年月日
xx顺号类编码
p性别
18位中末尾的y为校验码
将前17位的ascii码值经位移、异或运算结果不在0-9的令其为x
*/
function getJYM(str)
{
var strArray=new Array(17) //存储身份证的前17为数字
var Wi=new Array(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2,1) //表示第i位置上的加权因子
var Y=new Array('1','0','X','9','8','7','6','5','4','3','2') //校验码值
var S=0 //十七位数字本体码加权求和
var jym=0 //校验码
document.write("本算法为求身份证的校验码!<br><br>")
if (str.length!=17)
{
alert("只需输入身份证的前17位数据!")
return;
}
for ( i=16;i >=0 ;i--)
{
strArray[i]=Number(str.charAt(i))
}
for (j=16;j>=0;j--)
{
if(strArray[j]*Wi[j]==null)
{
document.write(i)
}
S=S+strArray[j]*Wi[j]
}
jym=S % 11
document.write("身份证的校验码为")
document.write(Y[jym])
document.write("<br><br>身份证号码为")
document.write(str)
document.write(Y[jym])
return Y[jym]
}
getJYM('44052418800101001')
</script>
分享到:
相关推荐
### SQL15位和18位公民身份证校验函数知识点详解 #### 一、背景介绍 在进行数据录入时,确保身份证信息的合法性至关重要。不正确的身份证信息将导致数据的有效性和准确性大打折扣。为此,设计了一款专门用于校验15...
学习和理解这样的源码,不仅可以加深对身份证校验码算法的理解,还能提升编程能力,尤其是对数值计算、字符串处理和异常处理等方面的掌握。同时,通过阅读和分析他人的代码,有助于培养良好的编程习惯,提高代码质量...
- 中国18位身份证号码由17位数字和最后一位校验码组成。前6位代表地区代码,接着8位是出生日期,然后3位为顺序号(奇数分配给男性,偶数分配给女性),最后1位是校验码。 2. **地区编码验证** - 地区代码是根据...
身份证校验码,也称为身份证号码的最后一位校验位,是用于确保身份证号码正确性的关键部分。在中华人民共和国居民身份证中,这个校验码是由前17位数字经过特定算法计算得出的,用于验证整个身份证号码的合法性。在本...
身份证最后一位校验码算法如下: 1. 将身份证号码前17位数分别乘以不同的系数,从第1位到第17位的系数分别为:7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 2. 将得到的17个乘积相加。 3. 将相加后的和除以11并得到余数。 4...
首先,身份证号码的校验码算法基于前17位数字。该算法的核心在于一个加权因子数组`iW`和一个对应校验值数组`szVerCode`: ```java int iW[] = {7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2}; char ...
此代码实现了对18位身份证号码的验证,包括检查号码格式、省份代码有效性、出生日期格式及校验码准确性,最后返回验证结果和身份证号码的部分信息,如省份、出生日期和性别。 #### 结论 通过以上分析和代码实现,...
〖GB 11643-1999〗中规定的是18位身份证号码:公民身份号码是特征组合码,由十七位数字本体码和一位数字校验码组成。排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码...
中国居民身份证校验码算法如下: 将身份证号码前面的17位数分别乘以不同的系数。从第一位到第十七位的系数分别为:7-9-10-5-8-4-2-1-6-3-7-9-10-5-8-4-2。 将这17位数字和系数相乘的结果相加。用加...
4. **校验码(第18位)**:用于验证身份证号码的有效性,采用特定的计算方法得出。 #### 三、身份证号码校验算法 1. **前17位加权求和** - 公式为:\( S = \sum_{i=0}^{16}(A_i \times W_i) \),其中 \( A_i \) ...
"Java 实现的 18 位身份证格式验证算法" 身份证号码是特征组合码...这个 Java 代码实现了身份证号码的验证算法,通过计算十七位数字本体码的加权和,得到校验码,然后与输入的身份证号码进行比较,以确定其是否合法。
alert('18位身份证校验码不正确, 应该为' + valnum); return false; } ``` #### 总结 通过以上介绍,我们可以看到使用正则表达式进行身份证号码的简单校验是一种快速有效的方法,而复杂的校验则能够进一步确保...
最完善的身份证号码合法性校验Java算法,适合Android平台,可以直接拿来在项目中使用,正则表达式。
4. 校验码(第18位):根据前17位数字通过特定算法计算得出,用于检验身份证号码的正确性。 在进行身份证码校验时,通常遵循以下步骤: 1. 验证长度:首先检查身份证号码是否为18位。 2. 验证数字格式:确认各部分...
身份证号码是由18位数字组成的,其中包括地址码、出生日期码、顺序码和校验码。在中国大陆,身份证号码的前6位代表了持证人的户籍所在地,接下来的8位是出生日期,接着的3位是顺序码,最后一位是校验码。顺序码对于...
在中国,身份证号码是18位数字,包含了出生日期、性别、地区代码以及顺序码和校验码等信息。 首先,身份证号码的前6位是地区代码,它代表了持证人的户籍所在地。这6位数字分为两部分,前2位代表省份,接下来的3位...
身份证号码验证算法 (一) 18身份证号码的结构 公民身份号码是特征组合码,由十七位数字本体码和一位...3.15位的身份证出生年份采用年份后2位,没有最后1位校验码。 4.完整的身份证18位,最后一位校验位可能是非数字。
- 第18位是校验码,通过特定算法计算得出,用于验证整个号码的正确性。 2. **校验码计算**: - 身份证号码的校验码计算基于前17位数字,采用加权模11除法,具体步骤如下: - 将第1位乘以7,第2位乘以9,第3位...
4. **校验码**:第十八位是校验码,用于验证身份证号码的有效性。 #### 校验码计算方法 校验码的计算基于前17位数字,并利用特定的权重因子(2, 4, 8, 5, 10, 9, 7, 3, 6, 1, 2, 4, 8, 5, 10, 9, 7)与这些数字相乘...