专栏首页黑白安全身份证最后一位算法

身份证最后一位算法

前段时间的攻击中,我获取了目标的身份证号码,结果缺少最后一位

在经过多次查阅后得出以下资料

(一)18身份证号码的结构

公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成。

排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位校验码。  1、地址码    表示编码对象常住户口所在县(市、旗、区)的行政区域划分代码,按GB/T2260的规定执行。 2、出生日期码    表示编码对象出生的年、月、日,按GB/T7408的规定执行,年、月、日代码之间不用分隔符。  3、顺序码    表示在同一地址码所标识的区域范围内,对同年、同月、同日出生的人编定的顺序号,顺序码的奇数分配给男性,偶数分配给女性。  4、校验码计算步骤

(1)十七位数字本体码加权求和公式    S = Sum(Ai * Wi), i = 0, ... , 16 ,先对前17位数字的权求和    Ai:表示第i位置上的身份证号码数字值(0~9)    Wi:7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 (表示第i位置上的加权因子) (2)计算模    Y = mod(S, 11)

(3)根据模,查找得到对应的校验码    Y: 0 1 2 3 4 5 6 7 8 9 10    校验码: 1 0 X 9 8 7 6 5 4 3 2

(二)根据17位数字本体码获取最后一位校验码程序实例

import java.util.Scanner;
public class Id18 {
       //计算身份证最后一位算法,https://www.cnblogs.com/xudong-bupt/p/3293838.html
    int[] weight={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};    //十七位数字本体码权重
    char[] validate={ '1','0','X','9','8','7','6','5','4','3','2'};    //mod11,对应校验码字符值    
    
    public char getValidateCode(String id17){
        int sum=0;
        int mode=0;
        for(int i=0;i<id17.length();i++){
            sum=sum+Integer.parseInt(String.valueOf(id17.charAt(i)))*weight[i];
        }
        mode=sum%11;
        return validate[mode];
    }
    public static void main(String[] args){
        Id18 test=new Id18();
        Scanner scan = new Scanner(System.in);
        System.err.println("========请输入17位身份证号========");//53252719851212003
        String ID_NUM = scan.next();
        System.out.println("该身份最后一位证校验码为:"+test.getValidateCode(ID_NUM));  
        System.out.println("完整身份证号码为:"+ID_NUM+test.getValidateCode(ID_NUM)); 
    }
}

如图

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 工信部发布 IPv6 规模部署行动计划:2018 年用户规模不少于 5000 万户

    工信部 2 日发布关于贯彻落实《推进互联网协议第六版(IPv6)规模部署行动计划》(以下简称<行动计划>)的通知。《行动计划》要求:到 2018 年末,基础电信...

    周俊辉
  • USRP从入门到追踪飞机飞行轨迹

    USRP是数款流行的SDR硬件中功能和应用都相对成熟的一款产品,从WIFI协议、ZigBee协议、RFID协议、GSM通信系统、LTE 4G通信系统到飞机通信、...

    周俊辉
  • 谷歌更新 Play 应用市场开发者审查政策 明确禁止挖矿应用上架

    谷歌今日对旗下 Play Store 应用市场的开发者政策进行了更新,禁止了更多种类的应用发行上架,包括进行加密币挖矿、包含“破坏性”广告等应用,但通过远程控制...

    周俊辉
  • 不用那么多,每天一点点,学习React,贵在持之以恒

    React,应该是目前前端领域最热的框架之一了,对于它的起源,现在我们大家应该都已经比较清楚了,它是fackbook搞出来的开源项目。它要解决的就是前端开发过程...

    web前端教室
  • 重磅报告|中国互联网+指数2017发布

      4月20日,2017中国“互联网+”数字经济峰会在杭州举办。峰会以“赋能新结构 连接新动能”为主题,吸引来自全国2000多位政企学界人士参会。腾讯研究院在峰...

    腾讯研究院
  • Django的Hello World(一)

    学完Django已经过去一个多月了,但是从开始学习到现在都是跟着视频敲代码,由于有提供完整的文档,所以很多时候是采用复制粘贴的方式进行的。

    zx钟
  • 腾讯研究院:2017中国“互联网+”数字经济指数

    本文作者:腾讯研究院 2017中国“互联网+”数字经济峰会举办,腾讯研究院在峰会上发布了《中国“互联网+”数字经济指数(2017)》报告。报告由腾讯公司联合滴...

    钱塘数据
  • bootstrap 输入框组 常用搜索框样式

    div input-group span input-group-addon <div style="padding: 100px 100px 10px...

    用户5760343
  • 腾讯资深数据分析师:如何搭建有效的指标体系

    关于作者 李梅花,腾讯CSIG\云产品部\数据平台产品中心\数据分析组 数据分析组员工。 导语I最近在忙着招聘,发现很多分析师简历上都写着帮助业务搭建各种类型...

    腾讯大讲堂
  • Vue模板语法与常用指令总结

    Vue.js 使用了基于 HTML 的模板语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据。在底层的实现上,Vue 将模板编译成虚拟 DOM ...

    Leophen

扫码关注云+社区

领取腾讯云代金券

玩转腾讯云 有奖征文活动