andikaputradev/nik-checker

GitHub: andikaputradev/nik-checker

基于 Go 开发的印尼国民身份证号(NIK)离线验证与信息解析 CLI 工具,通过内置区域数据将 16 位 NIK 解码为完整的人口与地区信息。

Stars: 6 | Forks: 1

# NIK Checker Premium [![Go Version](https://img.shields.io/badge/Go-1.19+-00ADD8?style=flat-square&logo=go&logoColor=white)](https://go.dev) [![License](https://img.shields.io/badge/License-MIT-blue.svg?style=flat-square)](LICENSE) 用于验证并显示印尼 KTP **国民身份证号 (NIK)** 完整信息的 CLI 应用程序。用户输入 NIK,程序将以表格格式显示人口信息。 ## 功能 - **交互式输入**:通过终端直接输入 16 位 NIK。 - **严格验证**:检查输入长度、数字格式、月份范围(01 至 12),以及出生日期的有效性(最大为 31,30 天月份的规则,2 月最大为 29)。 - **自动纠正**:如果日期代码大于 40,则性别设定为女性,出生日期减去 40。 - **离线区域查询**:省份、县/市、区和邮政编码从 `data.json` 中提取。 - **简洁的表格输出**:所有人口信息以结构化的表格格式显示。 ## 项目结构 ``` nik-checker/ ├── cmd/nik-checker/main.go Titik masuk program ├── internal/ │ ├── data/loader.go Pemuat dan pencari data wilayah │ ├── nik/parser.go Validasi dan parsing NIK │ └── output/formatter.go Render tabel (dan JSON opsional) ├── data.json Data wilayah lengkap ├── go.mod ├── go.sum ├── LICENSE └── README.md ``` ## 安装 ``` git clone https://github.com/andikaputradev/nik-checker.git cd nik-checker go build -o nik-checker ./cmd/nik-checker/ ``` ## 用法 运行程序,然后在提示时输入 NIK。 ``` ./nik-checker Input NIK: 3273014106960002 ``` 程序将显示如下示例的输出。 ## 输出示例 ``` Input NIK: 3273014106960002 -------------------------------------------------- NIK : 3273014106960002 Tanggal Lahir : 1/06/96 Jenis Kelamin : PEREMPUAN Provinsi : JAWA BARAT Kab/Kota : KOTA BANDUNG Kecamatan : SUKASARI Kode Pos : 40151 Uniqcode : 0002 -------------------------------------------------- ``` ## 技术细节 **性别和出生日期纠正** NIK 的第 7 和第 8 位数字表示日期 (DD)。如果 DD 的值大于 40,则性别设定为女性,实际出生日期计算为 DD 减去 40。例如:值 41 被解释为出生日期为 1 号的女性。 **日历验证** 月份必须在 01 到 12 的范围内。日期不能超过相关月份的限制(4 月、6 月、9 月和 11 月最多为 30 天;2 月最多为 29 天)。 **无大量内存分配的区域查询** 区域数据以原始 byte slice 存储。查找使用 `jsonparser.GetString` 而无需构建完整 map,因此内存占用保持在较低水平。 ## 许可证 本项目基于 [MIT License](LICENSE) 授权。区域数据 (`data.json`) 来源于印度尼西亚政府的公开数据,仅供教育目的使用。 ## 联系方式
[![Email](https://img.shields.io/badge/Gmail-D14836?style=flat-square&logo=gmail&logoColor=white)](mailto:wahyuandikaputra.co.id@gmail.com) [![LinkedIn](https://img.shields.io/badge/LinkedIn-0077B5?style=flat-square&logo=linkedin&logoColor=white)](https://linkedin.com/in/wahyu-andika-putra) [![Portfolio](https://img.shields.io/badge/andikaputra.dev-000000?style=flat-square&logo=safari&logoColor=white)](https://andikaputra.dev) [![Instagram](https://img.shields.io/badge/Instagram-E4405F?style=flat-square&logo=instagram&logoColor=white)](https://www.instagram.com/w.andikaputraa) [![WhatsApp](https://img.shields.io/badge/WhatsApp-25D366?style=flat-square&logo=whatsapp&logoColor=white)](https://wa.me/6285728337030) [![Indonesia](https://img.shields.io/badge/Indonesia-CE1126?style=flat-square&logo=googlemaps&logoColor=white)](#)
由 **Wahyu Andika Putra** 提供。
标签:EVTX分析, Go, Homebrew安装, Ruby工具, 印尼, 数据解析, 数据验证, 文档结构分析, 日志审计, 身份信息查询