吾爱破解 - LCG - LSG |安卓破解|病毒分析|破解软件|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 859|回复: 33

[Java] 使用Java编写身份证号码校验工具

[复制链接]
发表于 2017-11-15 00:18 | 显示全部楼层
本板块禁止发布 “电子书资料” ,此类主题请发布至『电子书屋』
本板块禁止发布 “视频教程” ,此类主题请发布至『动画发布区』『动画精品转载区』
很久之前楼主闲的无聊做Java校验身份证,其实算法我也找了,最开始根本不理解,后来慢慢接受的,所以当时刚理解就开始做
算法层次还是停留在加减法,希望大家不要介意,下面给大家介绍一下写的这些东西


[Java] 纯文本查看 复制代码
private String num = null;//声明的身份证号码
     
    public Jiao() {//无参构造方法
        super();
    }
 
    public Jiao(String num) {//有参构造方法
        super();
        this.num = num;
        JiaoYan(num);
    }
 
    public void JiaoYan(String fhz){//校验方法
        if(num.length()==18){
            int qq = 0;//截取字符的起点
            String year = num.substring(qq+6, qq+10);//截取年
            String yue = num.substring(qq+10, qq+12);//截取月
            int y=Integer.parseInt(yue);
            String ri = num.substring(qq+12, qq+14);//截取日
            int r=Integer.parseInt(ri);
            int nyr=Integer.parseInt(year+yue+ri);
            SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd");//设置日期格式
            int rq=Integer.parseInt(df.format(new Date()));
            System.out.println(rq);// new Date()为获取当前系统时间
            int iW[]={7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2};
            int sum=0;
            int sum1=0;
            int pd;
            if(nyr<rq&&nyr>19000000){
                if((y>00&&y<=12)&&(r>00&&r<=31)){
                    System.out.println(year+"年"+yue+"月"+ri+"日");
                    String sz [] = new String [17];
                    int zx[]=new int [17];
                    for(int i=0;i<sz.length;i++){
                        String sr =num.substring(i, i+1);
                        sz[i]=sr;
                        zx[i]=Integer.parseInt(sz[i]);
                        sum=iW[i]*zx[i];
                        sum1=sum+sum1;
                         
                    }
                    pd=sum1%11;
                    String zh=num.substring(17);
                    switch(pd){
                    case 0:
                        if(zh.equals("1")){
                            System.out.println("验证成功");
                            fhz=num;
                        }else{
                            System.out.println("验证失败");
                        }
                        break;
                    case 1:
                        if(zh.equals("0")){
                            System.out.println("验证成功");
                            fhz=num;
                        }else{
                            System.out.println("验证失败");
                        }
                        break;
                    case 2:
                        if(zh.equals("X")){
                            System.out.println("验证成功");
                            fhz=num;
                        }else{
                            System.out.println("验证失败");
                        }
                        break;
                    case 3:
                        if(zh.equals("9")){
                            System.out.println("验证成功");
                            fhz=num;
                        }else{
                            System.out.println("验证失败");
                        }
                        break;
                    case 4:
                        if(zh.equals("8")){
                            System.out.println("验证成功");
                            fhz=num;
                        }else{
                            System.out.println("验证失败");
                        }
                        break;
                    case 5:
                        if(zh.equals("7")){
                            System.out.println("验证成功");
                            fhz=num;
                        }else{
                            System.out.println("验证失败");
                        }
                        break;
                    case 6:
                        if(zh.equals("6")){
                            System.out.println("验证成功");
                            fhz=num;
                        }else{
                            System.out.println("验证失败");
                        }
                        break;
                    case 7:
                        if(zh.equals("5")){
                            System.out.println("验证成功");
                            fhz=num;
                        }else{
                            System.out.println("验证失败");
                        }
                        break;
                    case 8:
                        if(zh.equals("4")){
                            System.out.println("验证成功");
                            fhz=num;
                        }else{
                            System.out.println("验证失败");
                        }
                        break;
                    case 9:
                        if(zh.equals("3")){
                            System.out.println("验证成功");
                            fhz=num;
                        }else{
                            System.out.println("验证失败");
                        }
                        break;
                    case 10:
                        if(zh.equals("2")){
                            System.out.println("验证成功");
                            fhz=num;
                        }else{
                            System.out.println("验证失败");
                        }
                        break;
                    }
                }else{
                    System.out.println("出生日期错误");
                    fhz="出生日期错误";
                }
            }else{
                System.out.println("出生年月日错误");//年月日错误,结束
                fhz="出生年月日错误";
            }
        }else{
            System.out.println("输入错误,长度不对");
            fhz="输入错误,长度不对";
        }
    }



下面就是测试类,创建对象的时候调用的无参构造器,记得导包哦
[Java] 纯文本查看 复制代码
System.out.println("请输入自己的身份证号码");
        Scanner in=new Scanner(System.in);
        Jiao j=new Jiao(in.next());



测试图在下方,身份证号码网上随便搜的一个,有一些大家用不到,但是为了证明一下,所以打印出来了


图片.png



免费评分

参与人数 6吾爱币 +6 热心值 +5 收起 理由
zhzhip + 1 + 1 拿走了 谢谢分享
逗逗云 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
Spheal + 1 + 1 已答复!
小范 + 2 我很赞同!
War-Horse + 1 + 1 用心讨论,共获提升!
庄胜文 + 1 用心讨论,共获提升!

查看全部评分

本帖被以下淘专辑推荐:

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

 楼主| 发表于 2017-11-23 00:39 | 显示全部楼层
anttu 发表于 2017-11-22 20:07
身份证号校验无法用正则,六位数字地址码+八位数字出生日期码+三位数字顺序码+一位数字校验码,正则做不到

身份证号规则,前六位(省市县各2位),中间八位出生年月日(8位),后边两位是登记户籍时派出所的编号(当地的编号,可能是乡镇级),倒数第二位性别(男单。女双),最后一位校验码(通过这个公式算出来的校验码)。。。
但,计算做出来了,这个身份证号码是否存在那就不得而知了,所以只能用作校验身份证号码,不能判断实名制真实性

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

 楼主| 发表于 2017-11-15 13:34 | 显示全部楼层
ProgramerFangL 发表于 2017-11-15 10:45
一般网页的身份证拿正则就可以验证了吧,不过有个二次验证也挺好的,另外你的身份证号码确定不打码吗??? ...

不是自己的吃枣药丸,大码也没什么用,一看就是个假的,首页第一个正常收录的就是

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

发表于 2017-11-15 00:45 来自手机 | 显示全部楼层

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

发表于 2017-11-15 00:50 | 显示全部楼层
我记得这个昨天谁发过

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

发表于 2017-11-15 01:05 来自手机 | 显示全部楼层
谢谢分享 那些零碎的回忆,渐渐失去了方向。

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

发表于 2017-11-15 03:58 | 显示全部楼层
可以,老铁辛苦了。可以注册一些网站使用XX

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

发表于 2017-11-15 06:52 来自手机 | 显示全部楼层
挺好,谢谢分享

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

发表于 2017-11-15 07:51 来自手机 | 显示全部楼层
厉害了!可以用正则吗?哈哈

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

发表于 2017-11-15 08:01 | 显示全部楼层
学习一下,最近在学JAVA

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

发表于 2017-11-15 08:05 来自手机 | 显示全部楼层
准备学这个的,等考研结束

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

发表于 2017-11-15 08:13 | 显示全部楼层
支持一下,我也是编程新手

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则


免责声明:
吾爱破解所发布的一切破解补丁、注册机和注册信息及软件的解密分析文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。

Mail To:Service@52PoJie.Cn

快速回复 收藏帖子 返回列表 搜索

RSS订阅|手机版|小黑屋|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2017-11-24 02:22

Powered by Discuz!

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表