CURP生成器 - 开发测试墨西哥身份识别码
CURP生成器根据墨西哥官方RENAPO人口登记机构规定的标准格式,随机生成包含有效校验位的十八位身份识别码,格式与真实墨西哥公民身份证号完全一致但不对应任何真实个人信息,用于墨西哥本地化应用软件开发中的表单测试、数据库数据填充和后端API接口验证工作,免费在线生成。
使用正确的检查数字生成随机的、语法上有效的示例 CURP。
文档
什么是 CURP 生成器?
CURP 生成器会创建一个随机的示例 CURP,即墨西哥用于识别居民和公民的 18 字符代码。输出具有正确的结构和经过正确计算的校验位,但不会关联到真实个人。开发者可以使用此类工具测试软件,而不暴露任何人的真实个人数据。
什么是 CURP?
CURP 是 Clave Única de Registro de Población 的缩写,意为“人口登记唯一代码”。它由墨西哥内政部(Secretaría de Gobernación)通过国家人口登记处(RENAPO)分配。根据《联邦官方公报》(Diario Oficial de la Federación)刊登的2018 年规范性指南(Instructivo Normativo),每个 CURP 都是由 18 个字符组成的字母数字代码,发给墨西哥国民和在墨西哥合法居住的外国人。政府机构用它在记录中识别个人。该代码由姓名、出生日期、性别和出生地的相关部分组成,另有一个用于区分本会得到相同代码的人的字符,以及最后一位校验位。
CURP 的结构和格式
CURP 始终包含 18 个字符,全部为大写字母或数字。每个位置都有固定含义。
| 位置 | 含义 |
|---|---|
| 1 | 父姓的首字母 |
| 2 | 父姓中的第一个内部元音字母(首字母之后出现的第一个元音) |
| 3 | 母姓的首字母 |
| 4 | 名的首字母 |
| 5–6 | 出生年份的后两位数字 |
| 7–8 | 出生月份(01–12) |
| 9–10 | 出生日期(01–31) |
| 11 | 性别:H 代表 Hombre(男性),M 代表 Mujer(女性) |
| 12–13 | 出生州的两字母代码,例如墨西哥城为 DF,哈利斯科州为 JC |
| 14 | 父姓中的第一个内部辅音字母 |
| 15 | 母姓中的第一个内部辅音字母 |
| 16 | 名中的第一个内部辅音字母 |
| 17 | 区分相同的代码:截至 1999年12月31日 出生者用 0–9,自 2000年1月1日 起出生者用 A–J |
| 18 | 根据前 17 个字符计算出的校验位 |
各位置遵循同一指南中的表格。该工具从包含 32 个两字母代码的列表中选取州代码,列表对应 31 个州加上墨西哥城(DF)。
如何计算 CURP 校验位
第 18 个字符用于发现输入和复制错误。指南只说明它来自内政部使用的一种算法。本工具根据前 17 个字符,用下面的加权方法计算它:
- 列出前 17 个字符在字母表
0123456789ABCDEFGHIJKLMNÑOPQRSTUVWXYZ中的位置。该位置从 0 开始计数,就是字符的值。因此,0的值为 0,A的值为 10,R的值为 28,Z的值为 36。 - 将每个字符的值乘以一个权重。第一个字符的权重从 18 开始,之后每个字符递减 1,到第 17 个字符时为 2。
- 将 17 个乘积相加,得到总和 S。
- 校验位为
(10 − (S mod 10)) mod 10。
算例
设有一名虚构人物 Juan Pérez Ramírez,出生于 1985年3月15日,性别为男性,出生地为哈利斯科州。
- 位置 1:
P,取自“Pérez”的首字母 - 位置 2:
E,取自“Pérez”的第一个内部元音(首字母之后的字母为 E、R、E、Z,因此第一个元音是 E) - 位置 3:
R,取自“Ramírez”的首字母 - 位置 4:
J,取自“Juan”的首字母 - 位置 5–10:
850315,对应 1985-03-15 - 位置 11:
H,表示男性 - 位置 12–13:
JC,表示哈利斯科州 - 位置 14:
R,取自“Pérez”的第一个内部辅音 - 位置 15:
M,取自“Ramírez”的第一个内部辅音 - 位置 16:
N,取自“Juan”的第一个内部辅音 - 第 17 位:
0,一个数字,因为出生年份早于 2000 年(真实记录从 0 开始,只有当两人的前 16 个字符相同时才递增)
前 17 个字符为 PERJ850315HJCRMN0。对该字符串使用上述公式,得到总和 2342。由于 2342 mod 10 = 2,因此校验位为 (10 − 2) mod 10 = 8。完整的 CURP 为 PERJ850315HJCRMN08。
该生成器的工作方式
该工具分几步生成示例 CURP。它编造三个简短的随机姓名,每个由一个字母、一个元音和一个辅音组成,并从中取出第 1–4 位和第 14–16 位。如果前四个字母拼成了其内置冒犯性词语列表中的词,就重新生成。然后它在 1940 年到去年之间随机选取一个符合日历的出生日期,随机选取性别(H 或 M)和州代码。对于第 17 位,按照指南,若出生年份早于 2000 年则随机选一个数字,若为 2000 年或之后则随机选一个 A 到 J 的字母。最后用上面的公式计算校验位。生成的结果格式正确,但不对应任何真实的人。
生成的 CURP 的常见用途
软件团队使用生成的 CURP 测试注册表单、数据库字段和验证逻辑,然后再为墨西哥用户发布产品。由于这些代码是随机的,因此可以批量创建,用于负载测试或填充开发数据库,而不必使用或存储任何人的真实身份信息。
CURP 系统的历史
墨西哥联邦政府通过一项协议采用了 CURP,该协议于 1996年10月23日 刊登在《联邦官方公报》上。协议规定,CURP 将分配给所有居住在墨西哥的人和旅居国外的墨西哥国民,由 RENAPO 负责分配。现行的代码编制规则载于 2018 年指南。在第 17 位上,由数字变为字母标志着出生所在的世纪:1900 年代出生者用数字,2000 年起出生者用字母。
代码透露的信息
与纯粹按顺序编排的号码不同,CURP 内嵌了可读的信息:出生日期、性别和出生地。指南指出,这些部分连同前四个字母,使任何人都能核对一个代码是否编制正确。本工具会检查每个生成的出生日期是否为过去的真实日历日期。
常见问题
CURP 生成器有什么用途?
它会按照与真实 CURP 相同的格式创建随机代码,用于软件测试、填充数据库以及检查验证逻辑是否正常工作。
生成的 CURP 会关联到真实个人吗?
不会。每个字符都是随机选择的,或根据其他随机值计算得出。生成结果与任何真实个人(无论在世与否)都没有关联。
生成的 CURP 可以用于官方表格吗?
不能。只有内政部通过 RENAPO 才能分配真实的 CURP。生成的代码不属于任何人,不得用于任何政府表格或官方文件。
为什么有些 CURP 在位置 17 以字母结尾,而另一些以数字结尾?
第 17 位用于区分前 16 个字符相同的人。根据指南,截至 1999 年出生者为 0 到 9 的一个数字,2000 年或之后出生者为 A 到 J 的一个字母。本生成器遵循同样的规则:2000 年之前的日期用数字,2000 年之后的日期用 A 到 J 的字母。
为什么 CURP 有时第二个字符是 X?
因为前四个字符否则会拼成西班牙语中被视为粗俗的词。遇到这种情况,RENAPO 会把第二个字符替换为 X,所以 BUEI 变成 BXEI。
该工具会存储生成的 CURP 吗?
不会。代码会在浏览器中使用 JavaScript 生成。任何信息都不会发送到服务器或保存。
校验位如何计算?
前 17 个字符中的每个字符都会根据其在固定的 37 字符字母表中的位置转换为数字,再乘以从 18 到 2 的权重并求和。校验位为 (10 − (sum mod 10)) mod 10。请参见上面的计算示例。
参考文献
- 内政部(Secretaría de Gobernación),《联邦官方公报》。Instructivo Normativo para la asignación de la Clave Única de Registro de Población(2018年6月18日)。sidof.segob.gob.mx — 18 个字符的字母数字代码;各位置的含义;第 17 位截至 1999 年为 0–9,自 2000 年起为 A–J;第 18 位是由算法得出的校验位。
- 内政部(Secretaría de Gobernación),《联邦官方公报》。Convenio de Coordinación con el Estado de Guanajuato sobre la CURP。sidof.segob.gob.mx — 采用 CURP 的协议于 1996年10月23日 刊登在《联邦官方公报》上,规定分配给所有居住在墨西哥的人和旅居国外的国民。