IDCard中国身份证号码解析

2024-07-05 14:55:42 浏览数 (1)

一、下载安装

代码语言:javascript复制
ohpm install @nutpi/idcard

OpenHarmony ohpm 环境配置等更多内容,请参考如何安装 OpenHarmony ohpm 包[2]

二、使用

代码语言:javascript复制
import { parserChina, parserInternational } from '@nutpi/idcard/src/main/module/method';

代码示例:

代码语言:javascript复制
parserChina('11010519491231002X')

返回:

代码语言:javascript复制
    {
        "type":"居民身份证",
        "country":"中国",
        "sign":"北京市朝阳区",
        "birthday":"1949-12-31",
        "sex":"女",
        "isValid":false
    }

代码示例:

代码语言:javascript复制
parserInternational('932682198501010017')

返回

代码语言:javascript复制
    {
        "type":"外国人永久居留身份证",
        "country":"沙特阿拉伯",
        "sign":"江苏省",
        "birthday":"1985-01-01",
        "sex":"男",
        "isValid":true
    }

完整示例:

代码语言:javascript复制
import { parserChina, parserInternational } from '@nutpi/idcard/src/main/module/method';

export class IdCardInfo {
  type: string = ""
  country: string = ""
  sign: string = ""
  birthday: string = ""
  sex: string = ""
  isValid: string = ""
}

@Entry
@Component
struct Index {
  @State IdCardInfo: IdCardInfo = new IdCardInfo();
  aboutToAppear(): void {
    this.IdCardInfo = JSON.parse(JSON.stringify(parserChina('11010519491231002X')))

  }

  build() {
    Column() {
      Text(JSON.stringify(parserInternational('932682198501010017')))
        .fontSize(20)

      Text(this.IdCardInfo.type)
        .fontSize(30)
      Text(this.IdCardInfo.country)
        .fontSize(30)
      Text(this.IdCardInfo.sign)
        .fontSize(30)
      Text(this.IdCardInfo.birthday)
        .fontSize(30)
      Text(this.IdCardInfo.sex)
        .fontSize(30)

    }
    .height('100%')
    .width('100%')
  }
}

三、背景

居民身份证是国家法定的证明公民个人身份的证件。根据〖中华人民共和国国家标准 GB11643-1999〗中有关公民身份号码的规定,公民身份号码是特征组合码,由 17 位数字本体码和 1 位校验码组成。排列顺序从左至右依次为:6 位数字地址码,8 位数字出生日期码,3 位数字顺序码和 1 位数字校验码。

第 1-6 位为地址码,表示编码对象常住户口所在县(市、镇、区)的行政区划代码。

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

第 15-17 位为顺序码,是同一地址码所标示的区域范围内,对同年同月同日生的居民编订的顺序码。其中第 15、16 位是县、区级政府所辖派出所的分配码,每个派出所分配码为 10 个连续号码。第 17 位表示性别,男性为单数,女性为双数,如遇同年同月同日有两人以上时顺延第 2、第 3、第 4、第 5 个分配码;

第 18 位为校验码,根据前面 17 位数字码,按照 ISO 7064:1983.MOD 11-2 校验码计算出来。

通过身份证号码可以查询身份证发证地,出生日期,性别,有效性等信息,身份证 15 位自动转 18 位升位转换。第一代身份证为单页卡式,15 位编码,从 1984 年起开始启用,至 2013 年 1 月 1 日已停用。2004 年 1 月 1 日,第二代居民身份证开始换发 18 位身份证,身份证件正面有签发机关和有效期限,印有国徽图案、证件名称、写意长城图案及彩色花纹;证件背面设计有姓名、性别、民族、出生日期、常住户口所在地住址、公民身份号码和本人相片 7 个登记项目。

四、功能支持

  • 居民身份证
  • 港澳台居住证
  • 外国人永久居留身份证

五、开源协议

本项目基于 MIT[3] ,请自由地享受和参与开源。感谢mumuy[4]。和坚果派的小伙伴做出的努力。

六、运行环境

DevEco Studio NEXT Developer Beta1 Build Version: 5.0.3.401,

适用于 API:12 及以上,在真机 Mate60 测试 ok。

参考资料

[1]

坚果: https://blog.csdn.net/qq_39132095

[2]

如何安装 OpenHarmony ohpm 包: https://gitee.com/openharmony-tpc/docs/blob/master/OpenHarmony_har_usage.md

[3]

MIT: LICENSE

[4]

mumuy: https://github.com/mumuy/idcard

0 人点赞