美文网首页
Beanshell实现随机生成身份证

Beanshell实现随机生成身份证

作者: 夜尽雪舞 | 来源:发表于2020-09-03 18:40 被阅读0次

    身份证规则

    身份证号码共18位,由17位本体码和1位校验码组成。

    1)前6位是地址码,表示登记户口时所在地的行政区划代码,依照《中华人民共和国行政区划代码》国家标准(GB/T2260)的规定执行;
    2)7到14位是出生年月日,采用YYYYMMDD格式;

    3)15到17位是顺序码,表示在同一地址码所标识的区域范围内,对同年、同月、同日出生的人编订的顺序号,顺序码的奇数分配给男性,偶数分配给女性,即第17位奇数表示男性,偶数表示女性;

    4)第18位是校验码,采用ISO 7064:1983, MOD 11-2校验字符系统

    一代身份证与二代身份证的区别在于:

    一代身份证是15位,二代身份证是18位;

    一代身份证出生年月日采用YYMMDD格式,二代身份证出生年月日采用YYYYMMDD格式;

    一代身份证无校验码,二代身份证有校验码

    import java.text.SimpleDateFormat;

    //存储省份+城市+区域信息

    int [] provide_id = new int[] {

    350602, 370782, 513431,532624, 530426,370203, 350128, 421002, 350624, 430225

    };

    //获取省份长度

    int length = provide_id.length;

    //随机获取一个省份,前6位

    int index=(int)(Math.random()*length);

    var vareaCode= provide_id[index];

    //生成随机码

    var vrandNum="${__Random(000,999)}";

    //获取生日

    public static String getVbirthday(){

    long begin =

    System.currentTimeMillis()-3153600000000L;//100年内

    long end = System.currentTimeMillis()-9;//1年内

    long rtn = begin + (long) (Math.random() *(end - begin));

    Date date  = new Date(rtn);

    SimpleDateFormat simpleDateFormat = newSimpleDateFormat("yyyyMMdd");

    String vbirthday =simpleDateFormat.format(date);

    return vbirthday;

    };

    var vbirthday=getVbirthday();

    varvidentifyCode=vareaCode+vbirthday+vrandNum;

    //计算验证码并且返回身份证号

    public static void getVidentifyCode(){

    var vcount=0;

    //加权因子

    int [] vweight=new int[]{7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};

    String [] vCode=newString[]{"1","0","X","9","8","7","6","5","4","3","2"};

    varvtempCode=videntifyCode.split("");

    //验证码=身份证前17位放分别X加权因子之和%11

    for (var i =0;i<vtempCode.length;i++)

    vcount+=Integer.parseInt(vtempCode[i])*vweight[i];

    };

    var vresult=vCode[vcount%11];

    videntifyCode+=vresult;

    //将生成的身份证号放到参数中,以便后面的请求可以使用

    vars.put("videntifyCode",videntifyCode);

    log.info("正常运行"+videntifyCode);

    }

    //调用函数

    getVidentifyCode();

    相关文章

      网友评论

          本文标题:Beanshell实现随机生成身份证

          本文链接:https://www.haomeiwen.com/subject/gleisktx.html