网站首页/硬件软件列表/内容

由C#完成的18#格式验证算法

硬件软件2023-06-23阅读
根据运行的环境,操作系统可以分为桌面操作系统,手机操作系统,服务器操作系统,嵌入式操作系统等。

国内号查询归属地验证_号批量验证_号码验证算法

国家质量技术监督局于1999年7月1日实施的GB11643-1999“公民编号”中明确规定了18位ID卡标准. GB11643-1999“公民编号”是GB11643的修订版. -1989年的“社会安全号码”,指出原来的标准名称“社会安全号码”已重命名为“公民身份号码”,而GB11643-1999中的“公民身份号码”将从实施日期起代替GB11643-1989. GB11643-1999“公民号”的主要内容如下:

一个,范围

该标准规定了公民编号的编码对象,编号的结构和表达方式,以便每个编码对象获得唯一且未更改的合法编号.

第二个编码对象

公民编号是为具有中华人民共和国国籍的公民编码的.

三,数字的结构与表示

1. 数字结构

公民身份号码是功能的组合,由一个17位数字的身体代码和一位数字的校验代码组成. 从左到右的排列顺序是: 六位地址码,八位出生日期码,三位顺序码和一位校验码.

2. 地址代码

指明编码对象永久居所所在县(市,旗,区)的行政区划代码,并应按照GB / T2260的规定执行.

3. 出生日期代码

根据GB / T7408的规定,指示编码对象的出生年月日,并且在年月日代码之间没有分隔符.

4. 序列码

国内号查询归属地验证_号码验证算法_号批量验证

表示在同一地址代码标识的区域内,给同一年,同一月,同一天出生的人分配了序列号,男性分配了序列号,偶数分配了偶数. 数字分配给女性.

5. 验证码

(1)17位数字本体代码的加权和公式

S = Sum(Ai * Wi),i = 0,...,16,首先求和前17位数字的权重

Ai: 表示第i个位置的ID编号的数值

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

四,示例如下:

号批量验证_国内号查询归属地验证_号码验证算法

北京市朝阳区: 11010519491231002X

广东省汕头市: 440524188001010014

以下是程序代码:

私有字符串CheckCidInfo(string cid)

{

string [] aCity = new string [] {null,null,null,null,null,null,null,null,null,null,null,“北京”,“天津”,“河北”,“山西” ,“内蒙古”,零,零,零,零,零,“辽宁”,“吉林”,“黑龙江”,零,零,零,零,零,零,零,“上海”,“江苏”,“浙江”号码验证算法,“安威”,“福建”,“江西”,“山东”,零,零,零,“河南”,“湖北”,“湖南”,“广东”,“广西”,“海南” ,null,null,null,“重庆”,“四川”,“贵州”,“云南”,“西藏”,null,null,null,null,null,null,null,“陕西”,“甘肃”,“青海”,“宁夏”,“新疆”,零,零,零,零,零,“台湾”,零,零,零,零,零,零,零,零号码验证算法,零,零,“香港”, “ Macau”,null,null,null,null,null,null,null,null,“外国”};

double iSum = 0;

string info =“”;

System.Text.RegularExpressions.Regex rg =新的System.Text.RegularExpressions.Regex(@“ ^ \ d {17}(\ d | x)$”);

System.Text.RegularExpressions.Match mc = rg.Match(cid);

if(!mc.Success)

{

返回“”;

国内号查询归属地验证_号批量验证_号码验证算法

}

cid = cid.ToLower();

cid = cid.Replace(“ x”,“ a”);

if(aCity [int.Parse(cid.Substring(0,2))] == null)

{

返回“非法区域”;

}

尝试

{

DateTime.Parse(cid.Substring(6,4)+“-” + cid.Substring(10,2)+“-” + cid.Substring(12,2));

}

抓住

{

号批量验证_国内号查询归属地验证_号码验证算法

返回“非法生日”;

}

for(int i = 17; i> = 0; i-)

{

iSum + =(System.Math.Pow(2,i))* int.Parse(cid [17-i] .ToString(),System.Globalization.NumberStyles.HexNumber);

}

if(iSum!= 1)

return(“非法证书编号”);

return(aCity [int.Parse(cid.Substring(0,2))] +“,” + cid.Substring(6,4)+“-” + cid.Substring(10,2)+“- “ + cid.Substring(12,2)+”,“ +(int.Parse(cid.Substring(16,1))%2 ==1?” Male“: ” Female“));

}

通话测试:

Response.Write(CheckCidInfo(“ 340524198002300019”));

Response.Write(CheckCidInfo(“ 34052419800101001x”));


本文来自本站,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-254916-1.html



……

相关阅读