.net mvc身份证验证

本文介绍了.NET MVC中实现身份证验证的方法,包括校验码计算和性别识别。通过分析身份证号码的组成,如地址码、出生日期码、顺序码和校验码,判断身份证的性别和有效性。提供的代码示例展示了如何进行有效性和性别的验证。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

撰写时间:2019年2月25日星期六

身份证验证,这里这个验证功能就是根据身份证号的组成进行判断验证:公民身份号码是特征组合码,由十七位数字本体码和一位数字校验码组成。排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码,顺序码表示在同一地址码所标识的区域范围内,对同年、同月、同日出生的人编定的顺序号,顺序码的奇数分配给男性,偶数分配给女性。.校验码根据前面十七位数字码,按照ISO 7064:1983.MOD 11-2校验码计算出来的检验码,通过对这些数字的判断,然后就可以判断当前输入的这个身份证是什么地区的,哪年哪月哪日出生的,是男是男是女,是不是有效的身份证号,随便打打一个格式正确的身份证也是会识别出来不是有效的身份证号。下面要说的主要就验证身份证的性别,跟是否为有效身份证号。
在这里插入图片描述
两个验证,自动识别男女,如果不是真实有效的身份证号显示不是有效的身份证。代码如下:

//=================================== 判断身份证性别 =====================================
        function showBirthday(val) {
            if (15 == val.length) { //15位身份证号码
                if (parseInt(val.charAt(14) / 2) * 2 != val.charAt(14))
                    document.all.Write_Sex.value = '男', $("#Sex").empty().append('男');
                else
                    document.all.Write_Sex.value = '女', $("#Sex").empty().append('女');
            }
            if (18 == val.length) { //18位身份证号码
                if (parseInt(val.charAt(16) / 2) * 2 != val.charAt(16))
                    document.all.Write_Sex.value = '男', $("#Sex").empty().append('男');
                else
                    document.all.Write_Sex.value = '女', $("#Sex").empty().append('女');
                if (val.charAt(17) != IDCard(val)) {
                    $("#TS").html("不是有效身份证!");
                }
                else {
                    //document.all.Write_IDNumber.style.backgroundColor = 'white';
                    $("#TS").html("");
                }
            }
            if (15 != val.length && 18 != val.length) {
                $("#TS").html("不是有效身份证!");
            }
            if (0 == val.length) {
                $("#TS").html("");
            }
            if (RealNameCertificationID != 0) {
                if (15 == val.length) { //15位身份证号码
                    if (parseInt(val.charAt(14) / 2) * 2 != val.charAt(14))
                        document.all.Sex.value = '男', $("#Sex").empty().append('男');
                    else
                        document.all.Sex.value = '女', $("#Sex").empty().append('女');
                }
                if (18 == val.length) { //18位身份证号码
                    if (parseInt(val.charAt(16) / 2) * 2 != val.charAt(16))
                        document.all.Sex.value = '男', $("#Sex").empty().append('男');
                    else
                        document.all.Sex.value = '女', $("#Sex").empty().append('女');
                }
            }
        }
        //=================================== 18位身份证号最后一位校验 =====================================
        function IDCard(Num) {
            if (Num.length != 18)
                return false;
            var x = 0;
            var y = ''; for (i = 18; i >= 2; i--)
                x = x + (square(2, (i - 1)) % 11) * parseInt(Num.charAt(19 - i - 1));
            x %= 11;
            y = 12 - x;
            if (x == 0)
                y = '1';
            if (x == 1)
                y = '0';
            if (x == 2)
                y = 'X';
            return y;
        }
        //=================================== 求得x的y次方 =====================================
        function square(x, y) {
            var i = 1;
            for (j = 1; j <= y; j++)
                i *= x;
            return i;
        }

这段代码基本就是一些判断,根据身份证的组成判断,对身份证的验证码进行计算验证。
如果需要识别地区的话自行根据需要判断前六位数得出地区信息

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值