ValidX 外国人永久居留身份证(五星卡)详解

发布时间:2026/10/13 6:42:34
ValidX 外国人永久居留身份证(五星卡)详解
外国人永久居留身份证五星卡详解前言提到中国绿卡很多人会想到影视剧里外国人在中国畅行无阻的潇洒形象但现实中它是一张极难拿到、又极具分量的证件——《中华人民共和国外国人永久居留身份证》。2023 年 12 月新版启用后它因为背面的五星防伪设计被亲切地称为五星卡。这张证件和居民身份证看起来很像都是 18 位号码、都嵌了芯片、都能用身份证读卡机读取。但它不是居民身份证持证人没有中国国籍、没有户籍、号码也不是行政区划代码开头。对开发者来说最关心的问题只有一个18 位号码里到底藏着什么和居民身份证的 18 位有什么区别能不能用同一个校验器去验证今天这篇文章我们从历史沿革讲到证件式样重点拆解18 位号码的编码规则最后结合ValidX给出五星卡与居民身份证的校验分工方案。一、什么是外国人永久居留身份证定义它是获得在中国永久居留资格的外国人在中国境内居留的合法身份证件可以单独使用办理金融、教育、医疗、交通、住宿、通信、工作、税收和社会保险、财产登记、诉讼等事务时无需再携带护照。三个关键词居留资格居留期限不受限制不等于入籍持证人仍保留原国籍身份证件与护照搭配使用是身份认证而非出入境通行证出入境仍凭有效护照外国人标识号码首位9与我国公民身份号码首位1~8严格区分它与居民身份证的本质区别维度居民身份证外国人永久居留身份证面向人群中国公民取得永久居留资格的外国人法律性质公民身份证明居留资格证明号码开头行政区划代码首位1~8外国人标识码9号码位数18 位含 15 位老版2004 版 15 位 → 2023 版 18 位出入境凭证部分口岸可用不行须凭有效护照发证机关县级以上公安机关国家移民管理局二、历史沿革从绿卡到五星卡1. 改革开放初期19861986 年施行的《中华人民共和国外国人入境出境管理法》首次在法律层面规定了外国人在中国可获长期居留或永久居留资格。这一时期尚没有统一证件。2. 2004 年版永居证“中国绿卡”2004 年 8 月公安部、外交部发布第 74 号令《外国人在中国永久居留审批管理办法》正式实施永久居留证制度开始签发《中华人民共和国外国人永久居留证》俗称中国绿卡。该版采用 15 位证件号码。签发量极低2004 至 2013 年十年间全国仅签发 7,356 张被外界批评门槛太高。3. 2017 年版永居身份证2017 年 6 月公安部开始签发《中华人民共和国外国人永久居留身份证》——名称中加入身份二字强化身份认证功能参照第二代居民身份证标准重新设计内嵌非接触式芯片可用身份证阅读机具读取。但号码仍沿用 2004 版 15 位编码规则。2020 年《外国人永久居留管理条例征求意见稿》因引发争议被撤回2022 年起国家移民管理局放宽了外籍博士等高层次人才的申请条件。4. 2023 年版五星卡2023 年 9 月 15 日国家移民管理局宣布 12 月 1 日起签发启用新版永居证12 月 1 日当天首批 50 名外国人领到新版证件。新版因背面防伪设计参考五星红旗五颗星样式而得名五星卡。号码从 15 位升级为 18 位这是本文的核心——后面专门拆解。三、证件式样正面登载信息证件名称中英文“中华人民共和国 / 外国人永久居留身份证 / Foreign Permanent Resident ID Card”证件说明可在金融、教育、医疗、交通、住宿、通信、工作、税收和社会保险、财产登记、诉讼等事务时单独使用换证提示持证人曾持有的旧号码签发机关中华人民共和国国家移民管理局签发Issued by National Immigration Administration, PRC背面登载信息持证人照片姓名拉丁字符姓在前、名在后姓与名之间用,分隔有中文姓名时列第二行性别男/M或女/F出生日期YYYY.MM.DD国籍持证人国籍国中文名简称 ISO 3166-1 三位国家代码有效期限20YY.MM.DD - 20YY.MM.DD有效期一般十年未满 18 周岁者为五年证件号码ID No.18 位四、18 位号码编码规则重点2023 版五星卡采用 18 位证件号码和公民身份号码相仿但不完全相同。逐位拆解如下位数含义说明第 1 位外国人标识码固定为9是区分中外人员、识别证件类型的依据第 2~3 位申领地代码证件申领地的省级行政区划代码如北京11第 4~6 位国籍国代码持证人国籍国的 ISO 3166-1数字代码如加拿大124第 7~14 位出生日期码格式YYYYMMDD与居民身份证位置恰好一致第 15~17 位顺序码与公民身份号码相同的编排规则第 18 位校验码与公民身份号码相同的加权模 11 算法注意维基百科对其余部分与公民身份号码相同的表述加上下面这个官方口径的示例可以验证出生日期在第 7~14 位、顺序码 3 位、校验码 1 位全部与居民身份证共用同一套算法。官方示例拆解维基百科给出一个完整示例某女性、国籍国加拿大国家地区代码124、出生于 1981 年 8 月 3 日、在北京申领省级代码11、顺序码002、校验码4完整号码为9 1 1 1 2 4 19810803 002 4 │ │─│ │───│ │──────│ │─│ │ │ 申领地 国籍国 出生日期 顺序码 校验码 │ (北京) (加拿大) │ 外国人标识码逐位核对第 1 位9 外国人标识码 ✓第 2~3 位11 北京申领地省级代码✓第 4~6 位124 加拿大ISO 3166-1 数字代码✓第 7~14 位19810803 出生日期 ✓第 15~17 位002 顺序码 ✓第 18 位4 校验码 ✓校验码验证我们用居民身份证同一套算法验证这个号码前 17 位91112419810803002依次乘权重{7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2}求和9×71×91×101×52×84×41×29×18×61×30×78×90×103×50×80×42×2 639105161629483072015004 272272 mod 11 8余数 8 对应校验码表{1,0,X,9,8,7,6,5,4,3,2}的第 8 个 4与示例末位一致 ✓。这说明五星卡的校验码与居民身份证完全同源这是它能被 ValidX 的加权校验器直接复用的关键。五、与居民身份证的三大关键差异1. 前 6 位不是行政区划代码居民身份证前 6 位是完整的县区级地址码可映射省份、城市、区县五星卡前 6 位混编了三类信息标识码 申领地 国籍国不能用substring(0, 2)直接当省份代码。2. 性别奇偶规则不能跨证件套用居民身份证倒数第二位奇偶定性别。五星卡的顺序码虽与公民身份号码相同示例中002为女性但维基百科仅给出单个示例未明确公开性别奇偶规则。生产环境不要用奇偶去推断五星卡持证人性别——官方未公开仅凭一个样本下结论是危险的。3. 申领地 ≠ 国籍国 ≠ 现居地第 2~3 位是申领地在哪申的不是户籍外国人也无户籍概念第 4~6 位是国籍国反映持证人的外国国籍不是居住地申领后证件信息基本固定不代表持证人的实时居留状态六、申领条件与有效期申领条件依据《外国人在中国永久居留审批管理办法》第六条申请者应遵守中国法律、身体健康、无犯罪记录并符合下列条件之一在中国直接投资、连续三年投资稳定且纳税记录良好担任副总经理、副厂长等以上职务或副教授、副研究员等副高级以上职称连续任职满四年、四年内在华居留累计不少于三年且纳税良好对中国有重大突出贡献或国家特别需要前三类人员的配偶及其未满 18 周岁未婚子女中国公民或在华永居外国人的配偶婚姻存续满五年、已连续在华居留满五年、每年居留不少于九个月且有稳定生活保障和住所未满 18 周岁未婚子女投靠父母年满 60 周岁、在境外无直系亲属投靠境内直系亲属已连续在华居留满五年、每年居留不少于九个月且有稳定生活保障和住所居留义务获准永居者每年在华累计居留不得少于三个月确需出境的经批准可在五年内累计居留不少于一年有效期未满 18 周岁五年18 周岁及以上十年七、结合 ValidX 的校验实践核心原则按证件类型分发切勿混用五星卡和居民身份证虽然号码长度、日期位置、校验算法相同但首位不同、前 6 位语义不同、性别规则不可靠所以必须用两套校验器分别把关不能共用一个正则。ValidX 已内置完整支持注解方式Bean Validation / DTO 层publicclassUserDTO{// 中国公民居民身份证NotBlank(message身份证号不能为空)ChineseIdCardprivateStringidCard;// 外国人在华永久居留身份证五星卡NotBlank(message永居证号不能为空)ForeignerPermanentResidenceIdentityprivateStringprIdCard;}链式方式Service 层 / 动态数据ValidXvalidatorValidX.init().field(居民身份证).isChineseIdCard(idCard).field(五星卡).isForeignerPermanentResidenceIdentity(prIdCard);if(!validator.passed()){thrownewValidationException(validator.getErrors());}五星卡校验器做了什么ValidX 的ForeignerPermanentResidenceIdentityValidator严格按维基百科编码规则实现正则^9\d{17}$18 位数字且首位必须为 9校验申领地代码第 2~3 位必须在省级行政区划代码表内校验出生日期第 7~14 位为合法日期、不晚于今天、不早于 1900 年前 17 位加权模 11 计算校验码与末位比对⚠️ 一个值得注意的边界维基百科编码规则明确第 4~6 位为国籍国代码且示例为124加拿大。ValidX 的五星卡校验器目前只校验了第 2~3 位省级代码国籍国代码需配合NationalityCode(formats NUMERIC)单独复核详见下一小节。号码第 4~6 位是三位数字因此复核时必须限定 NUMERIC 形式——字母代码如CA不可能出现在号码中。国籍国代码校验器落地示例为解决第 4~6 位国籍国代码未校验的缺口ValidX 新增了NationalityCode注解与isNationalityCode()链式方法底层基于IsoCountry枚举ISO 3166-1 完整 249 国每个国家一条枚举常量两字母 / 三字母 / 三位数字三种编码绑定在同一常量上从结构上杜绝多份数据不同步。1. 三种编码形式如何定位形式示例加拿大典型场景五星卡号码中alpha-2两字母CASWIFT/BIC、表单国家选择❌ 号码是纯数字alpha-3三字母CAN国际航空、联合国文件❌ 同上numeric三位数字124五星卡号码第 4~6 位✅ 唯一适用三种形式可通过IsoCountry互相转换IsoCountry.fromAlpha2(CA).get().getNumeric();// 124IsoCountry.fromAlpha3(CAN).get().getAlpha2();// CAIsoCountry.fromNumeric(999).isPresent();// false999 未分配2. 注解用法// 通用场景任一形式通过即算通过NationalityCodeprivateStringcountryCode;// CA / CAN / 124 均可// 五星卡复核仅接受三位数字代码NationalityCode(formatsNationalityCode.NationalityCodeType.NUMERIC)privateStringnationalityCode;// 只能填 124不能填 CA3. 链式 API 用法ValidX.init().isNationalityCode(124)// 默认三种形式均可.isNationalityCode(911124198108030024.substring(3,6),newNationalityCode.NationalityCodeType[]{NationalityCode.NationalityCodeType.NUMERIC})// 五星卡第 4~6 位复核.passed();4. 顺带消除的重复数据项目原有的 SWIFT/BIC 校验器硬编码了一份 249 国 alpha-2 代码表本次已改为复用IsoCountry.fromAlpha2(...)——同一份 ISO 3166-1 数据全项目共享后续新增国家只需改一处。5. 五星卡完整校验链示例// 维基示例号码911124198108030024加拿大 124、北京申领、1981-08-03 出生StringcardNo911124198108030024;ValidX.init().isForeignerPermanentResidenceIdentity(cardNo)// 完整五星卡校验格式申领地日期校验码.isNationalityCode(cardNo.substring(3,6),newNationalityCode.NationalityCodeType[]{NationalityCode.NationalityCodeType.NUMERIC})// 第 4~6 位 124 加拿大.passed();八、FAQQ1五星卡和居民身份证能用同一个正则吗不能。首位不同9vs1~8且前 6 位语义完全不同。五星卡的正则是^9\d{17}$居民身份证是^\d{17}[\dX]$配合行政区划校验。两者应使用独立校验器。Q2五星卡的出生日期能用substring(6, 14)提取吗可以。五星卡出生日期位置第 7~14 位与居民身份证完全一致直接substring(6, 14)即可。Q3五星卡的校验码算法和居民身份证一样吗一样。权重{7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2}与模 11 映射表完全相同维基示例验证通过。所以 ValidX 内部复用了同一套加权校验逻辑。Q4能用五星卡判断持证人性别吗不要。居民身份证倒数第二位奇偶定性别但五星卡的性别规则官方未公开维基百科仅提供一个样本示例不足以支撑生产判断。涉及性别的敏感业务请以证件正面登记信息为准。Q5外国人持有五星卡就能当护照用吗不行。五星卡是境内居留的身份证件出入境仍须凭有效护照。它是身份认证证件不是出入境通行证件。Q6注册场景外国人该填什么证件业务若面向全体在华人员建议表单设计为**“证件类型 证件号码”**两个字段证件类型选居民身份证/五星卡/护照/港澳台居住证号码按类型分发校验。这也是金融、政务等合规系统的标准做法。九、总结我们用一张表回顾全文核心维度居民身份证五星卡2023 版号码位数18 位18 位首位行政区划1~8外国人标识码9第 2~3 位省级地址码申领地省级代码第 4~6 位市县级地址码国籍国代码ISO 3166-1第 7~14 位出生日期出生日期位置相同第 15~17 位顺序码含性别顺序码性别规则未公开第 18 位加权模 11 校验码同算法校验码面向人群中国公民在华永居外国人ValidX 校验器ChineseIdCardForeignerPermanentResidenceIdentity三个关键实践证件类型分发五星卡 ≠ 居民身份证用独立校验器分别把关绝不混用复用而非重写日期位置与校验码算法相同ValidX 内部已复用加权校验逻辑信息降级五星卡不能做省份映射、不能可靠推断性别解析类能力只适用于居民身份证相关阅读 Maven Central ValidX 完整文档 问题反馈