本程序用于生成身份证号,主要用途有:
- 生成一个合法的身份证号
- 根据已有的信息,推出所有可能的身份证号
目前发现部分地区的行政区规划代码可能改变过,例如遵义市正安县的代码曾为522124,而目前是520324 所以计算出来的身份证号都是根据最新的行政区规划代码得出的
python3 ./generate_id_number.py
本程序可以根据以下信息结合,生成精确的身份证号
可以不加市或省,使用方法-p
或--province
,-c
或--city
,-a
或--area
举例:
- 省或直辖市:
-p 北京市
或--province 湖北省
或-p 山西
- 地级市:
-c 青岛市
或--city 武汉
- 县级市:
-a 海淀区
注意:
- 很多城市可能多级重名,例如北京市既可以通过直辖市检索到,也可以在地级市检索到,但两者的结果不同。在
-p
检索下生成的身份证号码将包括其下面的所有区的代码,在-a
检索下只包含110000的代码 - 三个参数中只使用一个即可,同时使用多个按照则最精确的结果来。例如我写成
-p 湖北省 -c 青岛市
,最终的结果是青岛市 - 不要写多余的文字,例如
-a 青岛市崂山区
就是错误的写法,直接写崂山区或崂山均可! - 如果不指定,则默认为
-p 北京
- 可能多个城市都有相同的县级市,比如“桥东区”在河北省就有三个,所以会有多个选项,按照提示操作即可。
使用方法:-d
或--date
,
例如-d 1999/09/01
也可以指定某一个范围的日期,例如
--date 1998/09/01-1999/09/01
默认值是1970/01/01
-g
或 --gender
,后面写中文“男”或“女”
例如-g 男
-o
或--output
不加此参数则默认打印,加了参数则输出到文件中
还有一些改善的想法,等有时间再一一实现:
- 加入-r,--random参数,随机生成一个身份证号码
- 程序自动识别用户输入的地区,傻瓜化整个程序,使用时不用具体指定是省还是地级市
- 该系统没有经过完善的测试,对于不规范的输入没有做异常处理
- 增加反向查询的接口,输入身份证号,返回解释信息
- 增加逆推功能,对中间缺失的位数补全
- 增加读入配置文件的参数,--input,-i