台湾地区 居民身份识别证件编码规则

原创 2003年03月31日 09:40:00

声明:所有转载需要注明 URL 原始链接。这些链接应当来自于www.csdn.com。



    这里介绍的是我在net上搜集摘抄的。可能不准。也可能失效。

大概年份在 1995 左右。有没有新的规定,别见笑,我还没查到。

写这篇文档的目的是向我们的程序员介绍编码规则,以便需要

证件识别的程序适宜台湾地区使用,扩大程序的应用空间。

技术人谈技术,乐此不疲。

说正题:

1、简述:

证件编码 由 10 位组成。

首位是英文字母,代表区域划分。有对应的数字代号表示。

末位是校验用,用以验证证件编码的有效性。

2、首位字母,代号,区域 对应表:

/^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^/
╓------------------------------------------╖
║   字母、代号、区域  对应表         ║
╟====┬=======┬=======┬===╢
║ 代号 |    繁体     |     简体     |  字 ║
╟====+========+========+===╢
║  10   | 臺北市      | 台北市      | A   ║
╟====+========+========+===╢
║ 11    | 臺中市      | 台中市      | B   ║
╟====+========+========+===╢
║ 12    | 基隆市      | 基隆市      | C   ║
╟====+========+========+===╢
║ 13    | 臺南市      | 台南市     | D    ║
╟====+========+========+===╢
║ 14    | 高雄市     | 高雄市      | E   ║
╟====+========+========+===╢
║ 15    | 臺北縣      | 台北县      | F   ║
╟====+========+========+===╢
║ 16    | 宜蘭縣      | 宜兰县      | G   ║
╟====+========+========+===╢
║ 17    | 桃園縣      | 桃园县      | H   ║
╟====+========+========+===╢
║ 18    | 新竹縣      | 新竹县      | J    ║
╟====+========+========+===╢
║ 19    | 苗栗縣      | 苗栗县      | K   ║
╟====+========+========+===╢
║ 20    | 臺中縣      | 台中县     | L   ║
╟====+========+========+===╢
║ 21    | 南投縣      | 南投县     | M  ║
╟====+========+========+===╢
║ 22    | 彰化縣      | 彰化县     | N   ║
╟====+========+========+===╢
║ 23    | 雲林縣      | 云林县     | P   ║
╟====+========+========+===╢
║ 24    | 嘉義縣      | 嘉義县      | Q   ║
╟====+========+========+===╢
║ 25    | 臺南縣      | 台南县      | R   ║
╟====+========+========+===╢
║ 26    | 高雄縣      | 高雄县      | S   ║
╟====+========+========+===╢
║ 27    | 屏東縣      | 屏東县      | T   ║
╟====+========+========+===╢
║ 28    | 花蓮縣      | 花莲县      | U   ║
╟====+========+========+===╢
║ 29    | 臺東縣      | 台东县      | V   ║
╟====+========+========+===╢
║ 30    | 澎湖縣      | 澎湖县      | X   ║
╟====+========+========+===╢
║ 31    | 陽明山      | 陽明山      | Y   ║
╟====+========+========+===╢
║  32   |                 |                  | W  ║
╟====+========+========+===╢
║ 33    |                 |                  | Z   ║
╟====+========+========+===╢
║ 34    | 嘉義市      | 嘉義市      | I    ║
╟====+========+========+===╢
║ 35    | 新竹市      | 新竹市      | O   ║
╙====┴=======┴=======┴===╜

(表一)

3、编号计算:

3.1描述

第一步:按照 表一 将字母转换为数字。

第二步:新组成的编号对应位乘以 1987654321的对应位。

第三步:将所有对应位乘的乘积作累加和。

第四步:将累加和 mod 10 得模数。

第五步:10 - 模数 得到校验码。

第六步:将校验码与编码的末位作比较。

ok.

3.2例子

令 编号为: A 1 0 0 9 8 7 6 3 8 

查 表一 知:

A --->10.

组成新编号 1 0 1 0 0 9 8 7 6 3 8 

对应位相乘:

1 0 1 0 0 9 8 7 6 3 8 新编号
* 1 9 8 7 6 5 4 3 2 1 常數
-----------------------------------------------------
(1) (0) (8) (0) (0) (45) (32) (21) (12) (3) 对应位乘积

新数相加

X = 1 + 0 + 8 + 0 + 0 + 45 + 32 + 21 + 12 + 3

X = 122

计算模数

M = X % 10 = 122 % 10 = 2

计算校验码

Check_Code = 10 - M = 10 - 2 = 8

编号正确。


4、代码,字母 速算 法:

令字母表:ABCDEFGHJKLMNPQRSTUVXYWZIO

顺序编号:12345678....

则相应的代码 = 字母表编号 + 9 .

例如,C , 3 + 9 = 12 ,查 表一 正确。


5、C 编码:

bool
_stdcall
TaiWanUserID(
   char *s
)
{
 char *List="ABCDEFGHJKLMNPQRSTUVXYWZIO";
 char *p;
 int x;

 //入口检查
 if ( strlen(s)!=10 )
 {
  return false;
 }
 p=strchr(List,toupper(*s));

 if (p==NULL)
 {
  return false;
 }

 x=(int)(p-List);
 x=x %10 *9 + x/10;

 p=s+1;

 if ( *p !='1' && *p != '2')
 {
  return false;
 }

 for (int i=1;i<9;i++)
 {
  if (isdigit(*p))
  {
   x+=(*p++-'0')*(9-i);
  }
  else
  {
   return false;
  }
 }

 x=9 - x%10;

 return ( x==(*p-'0') );

}

 


参考:

張朝植, "身分證字號識別碼辨認之巨集設計", 倚天雜誌, DEC.1993, p156

居民身份证号码的编码规则

公民身份号码是特征组合码,由十七位数字本体码和一位数字校验码组成。 排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码。 地址码: 表示编码对象常...
  • star_of_light
  • star_of_light
  • 2017年08月08日 10:46
  • 105

公民身份证号码的编排规则

现在普遍使用的都是18位的身份证号码,由17位数字本体码和1位校验码组成。作为尾位的校验码,采用ISO7064:1983,MOD11-2校验码系统,是根据校验公式,由本体码决定的,用来验证录入或转录过...
  • playkid123
  • playkid123
  • 2015年03月23日 11:53
  • 591

条形码编码规则及标准

任何一种条形码,都是按照预先规定的编码规则和条形码有关标准,由条和空组合而成的。编码规则主要研究包括条形码基本术语在内的一些基本概念和条形码符号结构以及编码基本原理。编码规则既是有关条形码的入门知识,...
  • taotaohuoli
  • taotaohuoli
  • 2012年03月27日 11:14
  • 3943

Code128 编码规则

Code128简介: Code128码于1981年推出,是一种长度可变、连续性的字母数字条码。与其他一维条码比较起来,相对较为复杂,支持的字元也相对较多,又有不同的编码方式可供交互运用,因此其应用...
  • walk_ing
  • walk_ing
  • 2016年09月30日 17:15
  • 2019

各种编码规则

BK,ISO-8859-1,GB2312的本质区别编码有几种 ,计算机最初是在美国等国家发明的 所以表示字符只有简单的几个字母只要对字母进行编码就好 我们标准码 iso-8859-1 这就是一个标准但...
  • wsqplsh
  • wsqplsh
  • 2015年12月29日 17:54
  • 754

2015年第六届蓝桥杯C/C++程序设计本科B组决赛 居民集会(编程大题)

居民集会 蓝桥村的居民都生活在一条公路的边上,公路的长度为L,每户家庭的位置都用这户家庭到公路的起点的距离来计算,第i户家庭距起点的距离为di。 每年,蓝桥村都要举行一次集会。今年,由于村里的人口太多...
  • u014552756
  • u014552756
  • 2016年05月13日 21:37
  • 2077

iOS之来电阻止与身份识别实现

为了屏蔽各种中介的电话骚扰,最近安装了腾讯手机管家。在设置“骚扰拦截”功能时,提示需要点击“设置--->电话--->来电阻止与身份识别--->勾选第三方电话拦截软件提供的“电话识别”和“电话拦截”。 ...
  • LVXIANGAN
  • LVXIANGAN
  • 2017年07月26日 11:41
  • 1756

#1053 : 居民迁移

http://hihocoder.com/problemset/problem/1053 Description 公元2411年,人类开始在地球以外的行星建立居住点。在第1326号殖民...
  • lavendarWang
  • lavendarWang
  • 2015年06月26日 10:38
  • 1029

客户-供应商编码规则

供应商编码规则:       所有供应商统一使用7位编码长,例示如下:              **  **  *** ...
  • fangke
  • fangke
  • 2006年09月16日 15:31
  • 11216

EAS BOS根据编码规则生成编码

ICodingRule codingRule = CodingRuleFactory.getLocalInstance(ctx); ICodingRuleManager codingRuleMana...
  • sjp_87
  • sjp_87
  • 2015年10月28日 18:08
  • 671
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:台湾地区 居民身份识别证件编码规则
举报原因:
原因补充:

(最多只允许输入30个字)