15位到18位身份证的升级计算

简介:

18位身份证标准在国家质量技术监督局于1999年7月1日实施的GB11643-1999《公民身份号码》中做了明确的规定。 GB11643-1999《公民身份号码》为GB11643-1989《社会保障号码》的修订版,其中指出将原标准名称"社会保障号码"更名为"公民身份号码",另外GB11643-1999《公民身份号码》从实施之日起代替GB11643-1989。GB11643-1999《公民身份号码》号码的结构和表示形式 
1、号码的结构 
公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成。排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码。 
2、地址码 
表示编码对象常住户口所在县(市、旗、区)的行政区划代码,按GB/T2260的规定执行。 
3、出生日期码 
表示编码对象出生的年、月、日,按GB/T7408的规定执行,年、月、日代码之间不用分隔符。 
4、顺序码 
表示在同一地址码所标识的区域范围内,对同年、同月、同日出生的人编定的顺序号,顺序码的奇数分配给男性,偶数分配给女性。 
5、校验码 
(1)十七位数字本体码加权求和公式 
S = Sum(Ai * Wi), i = 0, ... , 16 ,先对前17位数字的权求和 
Ai:表示第i位置上的身份证号码数字值 
Wi:表示第i位置上的加权因子 
Wi: 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 
(2)计算模 
Y = mod(S, 11) 
(3)通过模得到对应的校验码 
Y: 0 1 2 3 4 5 6 7 8 9 10 
校验码: 1 0 X 9 8 7 6 5 4 3 2

 

1 public   string  PersonID15To18( string  person15ID)
2   {
3 if (person15ID.Length != 15)
4 
5 return ""
6 }

7 int[] w = new int[] 7910584216379105842 }//加权因子
8 char[] LastCode = "10X98765432".ToCharArray(); //校验码常数 
9 string tmpNewID = person15ID.Substring(06);
10 int tmpYear = int.Parse(person15ID.Substring(62));
11 if (tmpYear < 10)//2000年后出生
12 
13 tmpNewID += "20";//其实没有必要
14 }

15 else
16 {
17 tmpNewID += "19";
18 }

19 tmpNewID += person15ID.Substring(69);//完成15到18位的补码
20
21 //进行加权求和 
22 int s = 0;
23 for (int i = 0; i < 17; i++)
24 
25 s += int.Parse(tmpNewID.Substring(i, 1)) * w[i]; 
26 }

27
28 int y = s % 11//取模运算,得到模值 
29 //取模值为索引号的值 
30 tmpNewID += LastCode[y];
31
32 return tmpNewID;
33 }

 


本文转自shyleoking 51CTO博客,原文链接:http://blog.51cto.com/shyleoking/806903


相关文章
|
29天前
|
文字识别
文字识别OCR常见问题之卡证票据包含营业执照如何解决
文字识别OCR(Optical Character Recognition)技术能够将图片或者扫描件中的文字转换为电子文本。以下是阿里云OCR技术使用中的一些常见问题以及相应的解答。
23 2
|
4月前
|
人工智能 文字识别
文字识别OCR怎么查询剩余流量和有效期呢?
文字识别OCR怎么查询剩余流量和有效期呢?
48 1
|
29天前
|
机器学习/深度学习 文字识别 API
文字识别OCR常见问题之发票真伪查询有接口如何解决
文字识别OCR(Optical Character Recognition)技术能够将图片或者扫描件中的文字转换为电子文本。以下是阿里云OCR技术使用中的一些常见问题以及相应的解答。
25 0
|
30天前
使用阿里云身份证扫描识别接口案例—
使用阿里云身份证扫描识别接口案例—
31 0
|
1月前
|
机器学习/深度学习 算法 iOS开发
视觉智能平台常见问题之使用人脸及身份证采集如何解决
视觉智能平台是利用机器学习和图像处理技术,提供图像识别、视频分析等智能视觉服务的平台;本合集针对该平台在使用中遇到的常见问题进行了收集和解答,以帮助开发者和企业用户在整合和部署视觉智能解决方案时,能够更快地定位问题并找到有效的解决策略。
21 0
|
2月前
|
文字识别 安全 API
阿里云文字识别OCR的发票凭证识别功能可以通过API接口的形式进行调用
【2月更文挑战第5天】阿里云文字识别OCR的发票凭证识别功能可以通过API接口的形式进行调用
79 5
|
8月前
|
XML JSON 缓存
Java实现天眼查API根据企业纳税识别号查询企业详情数据方法
Java实现天眼查API根据企业纳税识别号查询企业详情数据方法
382 0
|
10月前
通过身份证号码判断是否已成年
通过身份证号码判断是否已成年
127 0
|
11月前
|
文字识别 UED
身份证OCR接口:提高录入效率+识别信息造假
现在的身份证登记多采用人工录入方式,这样做不仅费时而且效率很低。如何利用新兴的身份证OCR接口证件识别技术,快速、高效、完整地录入证件信息,并对其进行相应的管控与核验,已成为许多信息系统亟待解决的问题。
107 0
|
移动开发 文字识别 开发工具
iOS小技能: OCR 之银行卡/身份证信息识别(免费次数无限)
1. 功能:扫描银行卡识别信息( 银行名称、 银行卡号)并截取银行卡图像 2. 应用场景:快速填充银行卡号的场景,比如商户进件、实名认证
326 0
iOS小技能: OCR 之银行卡/身份证信息识别(免费次数无限)