px普贤教程PuXian
普贤教程 › 包参考

idcard 包

身份证校验(GB 11643-1999)

项值
包名idcard
版本0.2.0
可用版本0.1.0 / 0.2.0
入口idcard.px
分类认证与安全
文件数 / 行数1 / 202

安装与引入

bash
pxpkg init          # 首次
pxpkg add idcard@0.2.0
pxpkg install
px
import idcard
所属分类教程:认证与安全

公开接口

函数参数
idcard_validateid
idcard_upgrade15to18id15
其余 9 个 def(内部与辅助,可直接调用但不属稳定接口)
函数参数
idc_leapy
idc_valid_dates
idc_expand_yearyy
idc_checksumid17
idc_province_namecode6
idc_city_namecode6
idc_all_digitss
idc_validate18t
idc_validate15t

包内说明(源码头注释)

text
============================================================
普贤生态库:registry/idcard —— 身份证校验(GB 11643-1999)
------------------------------------------------------------
纯函数库(无 IO、无状态),编译(px build)与解释(px run)双模式一致。
idcard_validate(id) → Ok({province, province_name, city_name, birth, gender, type}) | Err(msg)
idcard_upgrade15to18(id15) → Ok(id18) | Err(msg)

规则(18 位):
6 位地区码(首位非 0) + 8 位生日(YYYYMMDD,闰年校验)
+ 3 位顺序码(第 17 位奇男偶女) + 1 位校验码
校验码加权因子 [7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2] 模 11 映射 10X98765432

规则(15 位旧号,1999-10-01 前签发):
6 位地区码 + 6 位生日(YYMMDD,两位年) + 3 位顺序码(末位奇男偶女)
无校验位;两位年 00-29 → 2000-2029,30-99 → 1930-1999

新增:15 位旧号支持、地区码枚举表(34 省级 + 主要城市)、15→18 升级
============================================================