前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用FME验证身份证号码

使用FME验证身份证号码

作者头像
数据处理与分析
修改2021-05-13 11:08:40
2.1K0
修改2021-05-13 11:08:40
举报

内容简介

本篇推送,将简单介绍一下怎么使用FME来验证身份证号码。

身份证号码

结构:

公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成。排列顺序从左至右依次为:六位地址码,八位出生日期码,三位顺序码和一位校验码。

形式

1.地址码

表示编码对象常住户口所在县(市、旗、区)的行政区划代码,按GB/T2260的规定执行。

2.出生日期码

表示编码对象出生的年、月、日,按GB/T7408的规定执行,年、月、日代码之间不用分隔符。

3.顺序码

表示在同一地址码所标识的区域范围内,对同年、同月、同日出生的人编定的顺序号,顺序码的奇数分配给男性,偶数分配给女性。

4.校验码

根据前面十七位数字码,按照ISO 7064:1983.MOD 11-2校验码计算出来的检验码。

校验码算法

将本体码各位数字乘以对应加权因子并求和,除以11得到余数,根据余数通过校验码对照表查得校验码。

加权因子:

校验码:

身份证号码验证

了解过身份证的组成以及验证规则之后,下面就要开始验证了。

验证方式

身份证号的验证,可以分为这么几个部分:1、地址码验证,2、出生日期验证,3、顺序码验证,4、校验码验证。其中地址码验证比较简单,只需提取出身份证的前6位,与县级行政区划代码做个验证即可。顺序码的验证,只需将第17位提取出来做奇偶性与性别的验证即可。所以接下来的验证将着眼于两部分:日期与校验码

日期校验

要验证身份证中的日期,首先要把日期信息提取出来。提取身份证的日期有多种方式,这里只介绍三种

1、根据字符串索引提取

这种方式是最简单的,直接根据数字的位置就可以把身份证种的日期提取出来,使用到的转换器如下图所示:

提取结果

2、使用字符串分割提取

这种方式稍微麻烦一些,需要根据熟悉一点格式化字符串的知识,不过在配置的时候是非常方便的,使用到的转换器如下图所示:

提取结果

3、使用正则的方式进行提取

正则方式最为优雅强大,一个转换器即可提取出日期信息

提取结果

以上三种方式都能提取出日期信息,而验证也非常的简单,直接使用日期转换的方式进行验证即可,能转换成功的,就是正常的日期,不成功就是有问题的日期

开始验证

直接使用日期转换的转换器,对提取出的转换器进行了验证,在运行的时候,下方的日志栏就出现了提示。提示说19850230这个日期,天数太大了,不是个有效的日期。所以这个身份证号码是有问题的。

验证码验证

根据身份证的验证码规则,需要将身份证的每一位乘上其加权因子,然后再与11取余,得到的余数再到对应的校验码表中,查找对应的校验码。这个计算过程,使用转换器来实现的话是非常麻烦的,所以我写了几行代码来实现,转换器如下图所示:

这个结果是不是正确,可以在Excel里计算验证一下(Excel的公式也是非常的强大)

首先,对两个身份证进行加权求和,及:两个身份证分别与其位置上的加权因子相乘

最后求和

可以看到,这里求的和,跟上面的转换器算的结果是一致的

然后再取余,验证校验码

可以看到,求出的余数与校验码与转换器算出来的结果也是一致的。这说明写的转换器,效果还是可以的!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-05-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据处理与分析 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 内容简介
  • 身份证号码
    • 结构:
      • 形式
      • 身份证号码验证
        • 验证方式
          • 日期校验
          • 验证码验证
      相关产品与服务
      验证码
      腾讯云新一代行为验证码(Captcha),基于十道安全栅栏, 为网页、App、小程序开发者打造立体、全面的人机验证。最大程度保护注册登录、活动秒杀、点赞发帖、数据保护等各大场景下业务安全的同时,提供更精细化的用户体验。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档