土耳其身份证号与校验码
每位土耳其公民都有一个 11 位的 T.C. Kimlik Numarası,最后两位是由前 9 位计算出的校验码。签发号码的 NVİ 确认了这一点,但没有公开计算公式。本指南介绍公开流传的通用公式、它能发现哪些错误、由公式推出的一个性质,以及号码不能告诉你的事情。
这是什么号码
T.C. Kimlik Numarası(土耳其共和国身份证号)由土耳其人口与公民事务总局(NVİ)签发。据 NVİ 介绍,2000 年建立了号码池,并按户籍登记的顺序(区、卷、家庭序号、个人序号)分配给公民。号码只分配一次,不能更改。它印在身份证上,在公共服务、银行和许多民间表格中都会用到。
NVİ 用几句话说明了结构:号码共 11 位,最后两位是验证数,由前 9 位通过一个算法计算得出。NVİ 还补充说,这个算法只能说明某个号码是否可能是它签发的,并会与其他公共机构共享,以便它们核对号码。公式本身并未出现在 NVİ 网站上。
公开流传的通用公式
公开流传、并被大多数校验工具和代码库采用的公式分两步。从左到右把各位记为 d1 到 d11。
- 第 10 位:把奇数位(d1 + d3 + d5 + d7 + d9)之和乘以 7,再减去偶数位(d2 + d4 + d6 + d8)之和。结果的个位数(除以 10 的余数,取正值)就是 d10。
- 第 11 位:把包括 d10 在内的前 10 位相加,和的个位数就是 d11。
此外,第一位永远不是 0。
计算示例:前 9 位为 123456789 时,奇数位之和为 1 + 3 + 5 + 7 + 9 = 25,偶数位之和为 2 + 4 + 6 + 8 = 20。25 × 7 − 20 = 155,所以 d10 = 5。前 10 位之和为 45 + 5 = 50,所以 d11 = 0。完整号码为 12345678950。这只是示例,不是真实个人的号码。
由于 NVİ 没有公开公式,LeedyBox 校验工具在页面上注明使用的是公开公式,审核资料中也把该公式标为未经官方文本确认。
为什么最后一位总是偶数
这两步之间有一个容易被忽略的联系。设前 9 位中奇数位之和为 O、偶数位之和为 E,则 d10 ≡ 7O − E,d11 ≡ O + E + d10 ≡ O + E + 7O − E = 8O(均按模 10)。任何整数乘以 8,个位都只能是 0、2、4、6 或 8,所以按这个公式,第 11 位永远是偶数。以 1、3、5、7、9 结尾的号码可以直接排除。
校验码能发现哪些错误
- 写错一位一定能发现。奇数位改变时,7O 会变化该变化量的 7 倍;偶数位改变时,E 会变化。两种情况下 d10 都对不上。写错 d10 或 d11 本身,也通不过各自的校验。
- 有些调换位置的错误发现不了。调换相邻的奇数位和偶数位,7O − E 会变化两数之差的 8 倍;差为 5 时,这个值是 10 的倍数。例如前两位互换后,16000000018 和 61000000018 都能通过。
- 校验不能证明号码存在。不以 0 开头的 11 位数中,大约每 100 个就有 1 个校验码相符,也就是说有数以百万计从未签发过的号码能通过。
号码不包含哪些信息
常有人以为号码里编有出生地、性别或年龄。NVİ 的说法正好相反:号码中没有关于本人身份、性别、年龄、宗教或出生地等有意义的信息,也无法从一个人的号码获得其亲属的身份信息。唯一有公开规则、人人都能计算的部分是校验码。
在软件中处理号码
- 把号码存成 11 个字符的字符串。它没有算术意义,而且有些系统会对数字字段补位或改格式。
- 输入时进行校验以发现笔误;如需核实身份,请依靠已对接的官方服务。通过校验不等于身份核验。
- 把真实号码当作个人信息处理,不要放进 URL、日志、错误报告或统计分析工具。
- 测试数据请使用能通过校验的生成号码。校验工具在浏览器中生成它们;生成的号码可能恰好与真实个人的号码相同,绝不要把它们当作任何人的身份使用。
常见问题
公开公式就是官方公式吗?
NVİ 确认最后两位由前 9 位计算,并会与公共机构共享算法,但没有公布公式。这里介绍的是公开流传的通用公式,LeedyBox 也是这样标注的。
T.C. Kimlik 号码可以以 0 开头吗?
不可以。按已知规则第一位不会是 0,所以以 0 开头的 11 位号码即使校验码相符也会被判为无效。
最后一位真的总是偶数吗?
按这个公式是的:第 11 位等于奇数位之和的 8 倍除以 10 的余数,所以一定是偶数。
能查出号码属于谁吗?
不能。校验只用到数字,据 NVİ 介绍号码不含个人信息,校验工具也不会到任何地方查询号码。
来源
来源:Nüfus ve Vatandaşlık İşleri Genel Müdürlüğü: T.C. Kimlik No İşlemleri · 核对日期: