问题描述

作为一个公民,每个人都有一张独一无二的身份证,有独一无二的身份证号码。在这里面几乎储存了我们所有的行踪与信息,所以有很多不法分子能够仅通过身份证号码进行一些犯罪活动。然而在生活中其实很容易泄露这些信息,比如车票等等,虽然遮住了4位数字,但这真的安全吗?解决方案

通过简单的查询,我们不难知道,其实身份证号码虽然独一无二,但其生成的规律确是固定的,仅仅通过公式便能确定一个身份证号码是否正确,反之也可以通过一个确定正确但不完整的身份证号码来反推完整信息。

身份证的组成部分相信大家都明白,其最重要的是最后一位校验码,而校验码的计算其实非常简单:

前17位数字每一个对应了一个系数,分别是7. 9 .10 .5. 8. 4. 2. 1. 6. 3. 7. 9. 10. 5. 8. 4. 2,将每一位数字与系数相乘得到的数加在一起除以11的余数一定在0-10以内。然后0 、1、 2、 3、 4、 5、 6、 7、 8、 9、 10这11个数字。其分别对应的最后一位身份证的号码为1 .0. X. 9. 8. 7. 6. 5. 4. 3. 2.,这样就得到自己的校验码,读者当然可以自己试试自己的身份证号码。

虽然我们知道,就算硬算,也不过366种尝试就能得到结果,但学习语言就是为了简化,所以笔者自己写了一段判断身份证是否正确和大致推算身份证号码的代码,读者可以自己试试是否有效。

Python代码:判断身份证号是否真实def ID_Card_judgment(ID_num):

list1 = [7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2]

sums = 0

for i in range(len(list1)):

new_num = int(ID_num[i]) * list1[i]

sums += new_num

check_code = [1,0,"X",9,8,7,6,5,4,3,2]

num = sums % 11

if str(check_code[num]) == ID_num[-1]:

return "True"

else:

return "False"

大致推断完整身份证号码:def ID_Card_calculation(ID_num):

if ID_num[-1] == "X":

new_ID_num = ID_num[:-1]+"10"

else:

new_ID_num = ID_num

a = new_ID_num.split("*")

new_ID_card = "".join(a)

front_code = [7,9,10,5,8,4,2,1,6,3,8,4,2] #除生日四位数其他数的参数

sums = 0

for i in range(len(front_code)):    #len(new_ID_card) = 18-4-1 =13

nums = int(new_ID_card[i]) * front_code[i]

sums += nums

# print(sums)   除了生日四位数,其他数与对应参数乘积之和

#7,9,10,5   生日四位数的参数

duiying = [1,0,10,9,8,7,6,5,4,3,2]

times = 0

for a in range(0,2):

for b in range(0,10):

for c in range(0,4):

for d in range(0,10):

if (sums + (a*7 + b*9 +  c*10 + d*5)) % 11  ==  duiying[int(new_ID_num[17:])]:

string =  str(a)+str(b)+str(c)+str(d)

if  0 < int(string[0:2]) <= 12 and 0 <  int(string[2:4]) <= 31:

times += 1

ID_Card_num = ID_num[0:10] + string +  ID_num[14:18]

print(ID_Card_num)

print("共有%d种情况。"%times)

这个代码要求输入的是生日为****的一串数字,也符合常见的隐藏身份证号码的规则。虽然不能精确的推断,但是所得的结果仅有二三十种,再通过现有的网络上一些平台,加上姓名和星座等等其他一些信息,轻松便能得到你的信息。结语

身份证上储存了太多的私人信息,大家一定要妥善保管。还有废弃的车票等其他看似隐藏了能够保护我们信息的数字,但都有可能是最后的“罪魁祸首“。虽然其他可能不是隐藏的这四位数字,但通过规律,也是能够得到的。所以笔者提醒大家,在网络上一定要将自己身份证号打上马赛克,不给不法分子有可乘之机。END

主  编   |   王楠岚

责  编   |   李和龙where2go 团队微信号:算法与编程之美

python身份证的秘密_Python|趣解身份证号码的奥秘相关推荐

  1. python定义公民类、变量有身份证号_Python趣解身份证号码的奥秘!

    原标题:Python趣解身份证号码的奥秘! 问题描述 作为一个公民,每个人都有一张独一无二的身份证,有独一无二的身份证号码.在这里面几乎储存了我们所有的行踪与信息,所以有很多不法分子能够仅通过身份证号 ...

  2. python身份证的秘密_Python算法之旅字符串游戏之身份证号的秘密

    最近在力扣(LeetCode)网闲逛,发现很多题目的官方题解都是用Python语言来描述的,这说明大家已经逐渐认识到Python语言描述算法的优越性:它语法简明,内置函数丰富,表述直截了当,可以用最简 ...

  3. Python|趣解身份证号码的奥秘

    欢迎点击「算法与编程之美」↑关注我们! 本文首发于微信公众号:"算法与编程之美",欢迎关注,及时了解更多此系列文章. 欢迎加入团队圈子!与作者面对面!直接点击! 问题描述 作为一个 ...

  4. python元祖封包_Python基础——解包与封包

    1.python封包 将多个值赋值给一个变量时,Python会自动将这些值封装成元组,这个特性称之为封包 a = 1,2,3 print(a,type(a)) 返回 (1, 2, 3) 当函数返回多个 ...

  5. python 函数式编程包_Python——详解函数式编程与闭包

    本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是Python专题的第9篇文章,我们来聊聊Python的函数式编程与闭包. 函数式编程 函数式编程这个概念我们可能或多或少都听说过,刚听 ...

  6. python解决物理问题_python递归解物理题

    课程设计:丁大喵 文章编辑:丁丁猫 关键词:递归 电阻 全局变量 This resistive network formsan infinite binary tree--every branch s ...

  7. Python入门程序 字符串应用(学号判断程序、密码破解程序、身份证的秘密)

    Python入门程序 字符串应用(学号判断程序.密码破解程序.身份证的秘密) 没想到学校会在大二同时学习Java的的时候一起学Python语言,在这写一些平时的python编程作业. 就从字符串的应用 ...

  8. python读取身份证照片信息_python验证身份证信息实例代码

    identity-card 验证身份证号码的正确性,不能仅仅通过正则表达式来验证,我们都知道我国的身份证一共是18位,由十七位数字本体码和一位校验码组成. 其排列顺序从左至右依次为:六位数字地址码,八 ...

  9. JavaScript 身份证号有效验证详解及实例代码

    这篇文章主要介绍了JavaScript 身份证号有效验证详解及实例代码的相关资料,需要的朋友可以参考下 JavaScript验证身份证号 1 2 3 4 5 6 7 8 9 10 11 12 13 1 ...

最新文章

  1. 媒体行业注册什么企业邮箱比较好?
  2. memcache windows64 位安装
  3. 基于oracle 的PL/SQL编程 -变量使用
  4. 完全背包问题 POJ1384
  5. mybatis生成UUID主键,且获取当前新增的UUID主键
  6. D - Undoubtedly Lucky Numbers CodeForces - 244B(数论 )
  7. #530. 「LibreOJ β Round #5」最小倍数 二分 + 数论
  8. 将服务器get到的响应打印,得到HttpResponse的响应主体
  9. 手机电池的更换标准/指标 最近小米手机换电池那些事
  10. linux进程状态a,Linux进程状态标识符含义
  11. Linux快捷键笔记
  12. ipqc的工作流程图_IPQC的工作流程及检验流程
  13. AWS CloudFront / 亚马逊CDN使用教程
  14. 有才的人全败给“傲”,平庸的人皆输在“懒”!
  15. 2013腾讯实习生面试经历
  16. RAW to FITS
  17. tensorflow-serving docker模型部署(以mnist为例)
  18. 路由器wan口ip地址_如何在没有浏览器的情况下查找外部或WAN IP地址?
  19. 如临现场的视觉感染力,NBA决赛直播还能这样看?
  20. java斗地主发牌_实现斗地主发牌(java)

热门文章

  1. python 手游自动化测试_Python+Appium实现APP自动化测试
  2. 统信桌面操作系统V20专业版(1020)正式发布
  3. Paste for Mac(剪切板历史管理工具)
  4. 顶流AI大赛背后:OPPO小布助手的技术势能和促成的想象力
  5. ImageMagick -- 图片处理
  6. 【有利可图王】PS教程:将人物设计处理成五彩缤纷的抽象效果!
  7. 宏基因组单个样本数据处理流程笔记
  8. 景联文科技:为扫地机器人AI训练提供数据采集标注解决方案
  9. LightOJ 1395 A Dangerous Maze (II) 期望DP
  10. U深度U盘启动不了Thinkpad X250怎么办?