用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字
云代码 - c#代码库

验证身份证

2012-10-22 作者: 神马举报

[c#]代码库

/// 验证身份证是否有效
public static bool IsIDCard ( string Id )
{
	if ( Id.Length == 18 )
	{
		bool check = IsIDCard18 ( Id );
		return check;
	}
	else if ( Id.Length == 15 )
	{
		bool check = IsIDCard15 ( Id );
		return check;
	}
	else
	{
		return false;
	}
}
public static bool IsIDCard18 ( string Id )
{
	long n = 0;
	if ( long.TryParse ( Id.Remove ( 17 ), out n ) == false || n < Math.Pow ( 10, 16 ) || long.TryParse ( Id.Replace ( 'x', '0' ).Replace ( 'X', '0' ), out n ) == false )
	{
		return false;//数字验证
	}
	string address = "11x22x35x44x53x12x23x36x45x54x13x31x37x46x61x14x32x41x50x62x15x33x42x51x63x21x34x43x52x64x65x71x81x82x91";
	if ( address.IndexOf ( Id.Remove ( 2 ) ) == -1 )
	{
		return false;//省份验证
	}
	string birth = Id.Substring ( 6, 8 ).Insert ( 6, "-" ).Insert ( 4, "-" );
	DateTime time = new DateTime();
	if ( DateTime.TryParse ( birth, out time ) == false )
	{
		return false;//生日验证
	}
	string[] arrVarifyCode = ( "1,0,x,9,8,7,6,5,4,3,2" ).Split ( ',' );
	string[] Wi = ( "7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2" ).Split ( ',' );
	char[] Ai = Id.Remove ( 17 ).ToCharArray();
	int sum = 0;
	for ( int i = 0; i < 17; i++ )
	{
		sum += int.Parse ( Wi[i] ) * int.Parse ( Ai[i].ToString() );
	}
	int y = -1;
	Math.DivRem ( sum, 11, out y );
	if ( arrVarifyCode[y] != Id.Substring ( 17, 1 ).ToLower() )
	{
		return false;//校验码验证
	}
	return true;//符合GB11643-1999标准
}
public static bool IsIDCard15 ( string Id )
{
	long n = 0;
	if ( long.TryParse ( Id, out n ) == false || n < Math.Pow ( 10, 14 ) )
	{
		return false;//数字验证
	}
	string address = "11x22x35x44x53x12x23x36x45x54x13x31x37x46x61x14x32x41x50x62x15x33x42x51x63x21x34x43x52x64x65x71x81x82x91";
	if ( address.IndexOf ( Id.Remove ( 2 ) ) == -1 )
	{
		return false;//省份验证
	}
	string birth = Id.Substring ( 6, 6 ).Insert ( 4, "-" ).Insert ( 2, "-" );
	DateTime time = new DateTime();
	if ( DateTime.TryParse ( birth, out time ) == false )
	{
		return false;//生日验证
	}
	return true;//符合15位身份证标准
}



网友评论    (发表评论)

共1 条评论 1/1页

发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。


扫码下载

加载中,请稍后...

输入口令后可复制整站源码

加载中,请稍后...