中国大陆18位身份证校验算法(附JS实现)
2011-05-20 23:15
591 查看
大陆18位身份证(第二代身份证)结构:(如下图所示)
身份号码是一组具有特征组合码,由十七位数字本体码和一位校验码组成。
排列顺序从左至右依次为:六位数字地区码,八位数字生日码,三位数字顺序码和一位数字校验码。
下面介绍18位身份证号码最后一位校验码的计算方法
--------------------------------------------------------------------------------------------
校验方法:
(1)先对前17位数字的权求和
S = Sum(Ci * Vi), i = 0, ... , 16
Ci:表示身份证号码上第i位置的数字值
Vi:表示第i位置上的“加权因子”
加权因子Vi: 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2
(2)计算模(固定算法)
Y = mod(S, 11)
(3)将计算模Y与对应的校验码校验
Y: 0 1 2 3 4 5 6 7 8 9 10 (通过Y取得对应校验码与身份证的第18位校验)
校验码: 1 0 X 9 8 7 6 5 4 3 2
下面附上Javascript实现代码
身份号码是一组具有特征组合码,由十七位数字本体码和一位校验码组成。
排列顺序从左至右依次为:六位数字地区码,八位数字生日码,三位数字顺序码和一位数字校验码。
下面介绍18位身份证号码最后一位校验码的计算方法
--------------------------------------------------------------------------------------------
校验方法:
(1)先对前17位数字的权求和
S = Sum(Ci * Vi), i = 0, ... , 16
Ci:表示身份证号码上第i位置的数字值
Vi:表示第i位置上的“加权因子”
加权因子Vi: 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2
(2)计算模(固定算法)
Y = mod(S, 11)
(3)将计算模Y与对应的校验码校验
Y: 0 1 2 3 4 5 6 7 8 9 10 (通过Y取得对应校验码与身份证的第18位校验)
校验码: 1 0 X 9 8 7 6 5 4 3 2
下面附上Javascript实现代码
/** * 检验18位身份证号码(15位号码可以只检测生日是否正确即可) * @author wolfchen * @param cid 18为的身份证号码 * @return Boolean 是否合法 **/ function isCnNewID(cid){ var arrExp = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];//加权因子 var arrValid = [1, 0, "X", 9, 8, 7, 6, 5, 4, 3, 2];//校验码 if(/^/d{17}/d|x$/i.test(cid)){ var sum = 0, idx; for(var i = 0; i < strID.length - 1; i++){ // 对前17位数字与权值乘积求和 sum += parseInt(cid.substr(i, 1), 10) * arrExp[i]; } // 计算模(固定算法) idx = sum % 11; // 检验第18为是否与校验码相等 return arrValid[idx] == cid.substr(17, 1).toUpperCase(); }else{ return false; } }
相关文章推荐
- java 实现从15位~18位的身份证号码转换,校验中国大陆公民身份证、香港居民身份证、澳门身份证和台湾身份证。
- JS实现身份证号码15位转18位时最后一位的算法
- VB.NET实现身份证15位升18位的算法
- java实现的18位身份证格式验证算法
- C#实现的18位身份证格式验证算法
- C#实现的18位身份证格式验证算法
- 18位身份证校验算法
- C#实现的18位身份证格式验证算法
- C#实现的18位身份证格式验证算法[转载] 选择自 mYang 的 Blog
- C#实现的18位身份证格式验证算法
- C#实现的18位身份证格式验证算法
- js实现中国公民身份证号码有效性验证
- java实现的18位身份证格式验证算法
- 15位和18位身份证JS校验的简单实例
- java实现的18位身份证格式验证算法
- 使用JS 校验15或18位身份证的合法性以及得到所属地区,出生日期,性别
- java实现的18位身份证格式验证算法
- java实现的18位身份证格式验证算法
- C#实现的18位身份证格式验证算法[转载]