c# 版 18位身份证严格验证及 15位转18位
来源:互联网 发布:域名注册后如何解析 编辑:程序博客网 时间:2024/05/04 05:57
private string GetCard(string cid)
{
if (cid.Length == 15)
{
cid = per15To18(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,null,null,"上海","江苏","浙江","安微","福建","江西","山东",null,null,null,"河南","湖北","湖南","广东","广西","海南",null,null,null,"重庆","四川","贵州","云南","西藏",null,null,null,null,null,null,"陕西","甘肃","青海","宁夏","***",null,null,null,null,null,"台湾",null,null,null,null,null,null,null,null,null,"香港","澳门",null,null,null,null,null,null,null,null,"国外"};
double iSum=0;
//string info="";
System.Text.RegularExpressions.Regex rg = new System.Text.RegularExpressions.Regex(@"^/d{17}(/d|x)$");
System.Text.RegularExpressions.Match mc = rg.Match(cid);
if(!mc.Success)
{
// return "格式不正确!";
return "";
}
cid = cid.ToLower();
cid = cid.Replace("x","a");
if(aCity[int.Parse(cid.Substring(0,2))]==null)
{
//return "非法地区";
return "";
}
try
{
DateTime.Parse(cid.Substring(6,4)+"-"+cid.Substring(10,2)+"-"+cid.Substring(12,2));
}
catch
{
//return "非法生日";
return "";
}
for(int i=17;i>=0;i--)
{
iSum +=(System.Math.Pow(2,i)%11)*int.Parse(cid[17-i].ToString(),System.Globalization.NumberStyles.HexNumber);
}
if(iSum%11!=1)
//return("非法证号");
return("");
return(cid.Substring(6,4)+"-"+cid.Substring(10,2)+"-"+cid.Substring(12,2));
}
private string per15To18(string perIDSrc)
{
int iS = 0;
//加权因子常数
int[] iW = new int[] { 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 };
//校验码常数
string LastCode = "10X98765432";
//新身份证号
string perIDNew;
perIDNew = perIDSrc.Substring(0, 6);
//填在第6位及第7位上填上‘1’,‘9’两个数字
perIDNew += "19";
perIDNew += perIDSrc.Substring(6, 9);
//进行加权求和
for (int i = 0; i < 17; i++)
{
iS += int.Parse(perIDNew.Substring(i, 1)) * iW[i];
}
//取模运算,得到模值
int iY = iS % 11;
//从LastCode中取得以模为索引号的值,加到身份证的最后一位,即为新身份证号。
perIDNew += LastCode.Substring(iY, 1);
return perIDNew;
}
转载他处,地址不详,以备不时之需。
- c# 版 18位身份证严格验证及 15位转18位
- 15位身份证转18位/18位身份证验证
- 15位或18位身份证验证
- 18位身份证验证
- 18位身份证验证
- 18位身份证验证
- 身份证号码15位升18位身份证18位验证
- 身份证验证和15位转18位
- 身份证18位C#验证程序
- 18位身份证标准及验证
- 身份证15位转18位
- 身份证15位转18位网页
- 18位身份证验证方法
- 18位身份证验证源代码
- 18位身份证验证方法
- 18位身份证验证方法
- 18位身份证验证方法
- 18位身份证验证代码
- 海量数据查询优化
- select 百万级表记录数使用sys.partitions 速度那叫个“快”
- C#生成随机数或随即字母
- PHP编写网站程序的十个经验技巧
- SQL2005中CURSOR的用法举例
- c# 版 18位身份证严格验证及 15位转18位
- EmbeddedWebBrowser(EmbeddedWB)不显示图片
- MaxScript——3ds max 中的物体系
- msdn library january 2001 下载审明
- 从sql server 2000升级到2005有5种方法:
- The law in love...
- JDBC游标的使用----ResultSet对象
- 通用分页存储过程
- 关于 jquery Uploadify 上传插件 在 asp.net中 的使用