Trình tạo CURP - Kiểm tra Mã ID Mexico cho Phát triển
Tạo CURP kiểm tra hợp lệ cho việc phát triển ứng dụng Mexico. Công cụ miễn phí tạo mã định danh 18 ký tự ngẫu nhiên theo định dạng chính thức của RENAPO. Hoàn hảo để kiểm tra, nạp dữ liệu cơ sở dữ liệu và xác thực API.
Tạo mẫu CURP ngẫu nhiên, hợp lệ về cú pháp với chữ số kiểm tra chính xác.
Tài liệu hướng dẫn
Trình tạo CURP là gì?
Trình tạo CURP tạo một CURP mẫu ngẫu nhiên, là mã gồm 18 ký tự mà Mexico sử dụng để nhận dạng cư dân và công dân. Kết quả có cấu trúc đúng và chữ số kiểm tra được tính chính xác, nhưng không liên kết với người thật. Nhà phát triển dùng các công cụ như vậy để kiểm thử phần mềm mà không làm lộ dữ liệu cá nhân thực của bất kỳ ai.
CURP là gì?
CURP là viết tắt của Clave Única de Registro de Población, nghĩa là Mã đăng ký dân số duy nhất. Mã này do RENAPO (Registro Nacional de Población e Identidad), cơ quan đăng ký dân số quốc gia của Mexico, cấp. Gần như mọi cư dân Mexico đều có một mã. CURP xuất hiện trên biểu mẫu nhập học, hồ sơ thuế, giấy tờ y tế và hồ sơ đăng ký cử tri. Mã được tạo từ các phần trong họ, tên, ngày sinh, giới tính và bang nơi sinh của một người, cùng hai ký tự bổ sung giúp phân biệt những người nếu không sẽ có cùng mã.
Cấu trúc và định dạng CURP
CURP luôn có 18 ký tự, tất cả đều là chữ in hoa hoặc chữ số. Mỗi vị trí có một ý nghĩa cố định.
| Vị trí | Ý nghĩa |
|---|---|
| 1 | Chữ cái đầu của họ bên nội |
| 2 | Nguyên âm đầu tiên ở bên trong họ bên nội (nguyên âm đầu tiên sau chữ cái đầu) |
| 3 | Chữ cái đầu của họ bên ngoại |
| 4 | Chữ cái đầu của tên |
| 5–6 | Hai chữ số cuối của năm sinh |
| 7–8 | Tháng sinh (01–12) |
| 9–10 | Ngày sinh (01–31) |
| 11 | Giới tính: H là Hombre (nam), M là Mujer (nữ) |
| 12–13 | Mã gồm hai chữ cái chỉ bang nơi sinh, chẳng hạn DF cho Thành phố Mexico hoặc JC cho Jalisco |
| 14 | Phụ âm đầu tiên ở bên trong họ bên nội |
| 15 | Phụ âm đầu tiên ở bên trong họ bên ngoại |
| 16 | Phụ âm đầu tiên ở bên trong tên |
| 17 | Một chữ số đối với người sinh trước 2000, hoặc một chữ cái đối với người sinh vào 2000 trở đi |
| 18 | Chữ số kiểm tra được tính từ 17 ký tự đầu tiên |
Mexico có 32 mã bang trong hệ thống này, mỗi mã dành cho một trong 31 bang và Thành phố Mexico.
Khi bốn ký tự đầu tiên vô tình tạo thành một từ bị xem là tục trong tiếng Tây Ban Nha, RENAPO thay ký tự thứ hai bằng X. Một người tên Ines Bueno Estrada nếu không thay đổi sẽ có mã bắt đầu bằng BUEI, nên mã thực tế bắt đầu bằng BXEI. Trình tạo này chặn cùng 82 từ đó và áp dụng cùng quy tắc thay thế.
Cách tính chữ số kiểm tra CURP
Ký tự thứ 18 giúp phát hiện lỗi gõ và sao chép. Ký tự này được tính từ 17 ký tự đầu tiên theo phương pháp sau:
- Tra từng ký tự trong 17 ký tự đầu tiên theo bảng chữ cái
0123456789ABCDEFGHIJKLMNÑOPQRSTUVWXYZ. Vị trí của ký tự trong danh sách này, bắt đầu từ 0, là giá trị của nó. Vì vậy,0có giá trị 0,Acó giá trị 10,Rcó giá trị 28 vàZcó giá trị 36. - Nhân giá trị của mỗi ký tự với một trọng số. Trọng số bắt đầu là 18 đối với ký tự đầu tiên và giảm một đơn vị sau mỗi ký tự, kết thúc ở 2 đối với ký tự thứ 17.
- Cộng 17 tích lại để được tổng S.
- Chữ số kiểm tra là
(10 − (S mod 10)) mod 10.
Ví dụ minh họa
Xét một người hư cấu tên Juan Pérez Ramírez, sinh ngày 15 tháng 3, 1985, giới tính nam, tại Jalisco.
- Vị trí 1:
P, chữ cái đầu của “Pérez” - Vị trí 2:
E, nguyên âm đầu tiên ở bên trong “Pérez” (các chữ cái sau chữ đầu là E, R, E, Z, nên nguyên âm đầu tiên là E) - Vị trí 3:
R, chữ cái đầu của “Ramírez” - Vị trí 4:
J, chữ cái đầu của “Juan” - Các vị trí 5–10:
850315, tương ứng với 1985-03-15 - Vị trí 11:
H, giới tính nam - Các vị trí 12–13:
JC, Jalisco - Vị trí 14:
R, phụ âm đầu tiên ở bên trong “Pérez” - Vị trí 15:
M, phụ âm đầu tiên ở bên trong “Ramírez” - Vị trí 16:
N, phụ âm đầu tiên ở bên trong “Juan” - Vị trí 17:
0, một chữ số vì năm sinh trước 2000 (hồ sơ thực tế dùng một quy tắc cố định để chọn chữ số; ví dụ này dùng 0)
17 ký tự đầu tiên là PERJ850315HJCRMN0. Áp dụng công thức trên cho chuỗi này cho tổng bằng 2342. Vì 2342 mod 10 = 2, chữ số kiểm tra là (10 − 2) mod 10 = 8. CURP đầy đủ là PERJ850315HJCRMN08.
Trình tạo này hoạt động như thế nào
Công cụ tạo một CURP mẫu qua vài bước. Trước tiên, công cụ chọn ngẫu nhiên các chữ cái cho phần tên, sau đó chọn một năm sinh từ 1940 đến năm trước năm hiện tại, để ngày sinh luôn nằm trong quá khứ. Ngày được chọn trong phạm vi ngày thực tế của tháng đã chọn, nên tháng Hai có 29 ngày chỉ xuất hiện trong năm nhuận. Giới tính và mã bang được chọn ngẫu nhiên. Tiếp đó, công cụ thêm ba phụ âm bên trong, áp dụng quy tắc thay thế từ tục nếu cần, chọn một chữ cái cho vị trí 17 khi năm sinh là 2000 trở đi và chọn một chữ số nếu năm sinh sớm hơn, rồi tính chữ số kiểm tra bằng công thức trên.
Trước khi hiển thị một mã, công cụ kiểm tra lại: cấu trúc phải khớp với mẫu gồm 18 ký tự, tháng phải là 01-12, ngày được mã hóa phải tồn tại trên lịch và nằm trong quá khứ, còn chữ số kiểm tra phải khớp. Thế kỷ của ngày đó được xác định từ vị trí 17 theo cùng quy tắc RENAPO sử dụng: chữ số có nghĩa là thập niên 1900, chữ cái có nghĩa là thập niên 2000. Mã không vượt qua bất kỳ kiểm tra nào sẽ không được hiển thị.
Những cách sử dụng phổ biến của CURP được tạo
Các nhóm phát triển phần mềm sử dụng CURP được tạo để kiểm thử biểu mẫu đăng ký, trường cơ sở dữ liệu và logic xác thực trước khi ra mắt sản phẩm cho người dùng Mexico. Vì các mã này là ngẫu nhiên, chúng có thể được tạo hàng loạt để kiểm thử tải hoặc khởi tạo cơ sở dữ liệu phát triển mà không sử dụng hay lưu trữ thông tin nhận dạng thực của bất kỳ ai.
Lịch sử hệ thống CURP
Mexico đưa CURP vào sử dụng vào 1996 để thay thế một tập hợp rời rạc các hệ thống nhận dạng do những cơ quan chính phủ khác nhau sử dụng riêng lẻ, khiến việc đối chiếu hồ sơ của cùng một người giữa các cơ sở dữ liệu trở nên khó khăn. Kể từ đó, CURP trở thành yêu cầu trong nhiều giao dịch với chính phủ, bao gồm nhập học, khai thuế và xin hộ chiếu. Đối với người sinh từ 2000 trở đi, RENAPO điền một chữ cái thay vì một chữ số vào vị trí 17.
So sánh CURP với các hệ thống mã số định danh quốc gia khác
| Quốc gia | Hệ thống | Định dạng |
|---|---|---|
| Mexico | CURP | 18 ký tự, gồm chữ cái và chữ số |
| Hoa Kỳ | Số An sinh xã hội | 9 chữ số |
| Canada | Số bảo hiểm xã hội | 9 chữ số |
| Brazil | CPF | 11 chữ số |
| Ấn Độ | Aadhaar | 12 chữ số |
| Tây Ban Nha | DNI/NIE | 8 chữ số cộng với một chữ cái kiểm tra |
Không giống một số hoàn toàn tuần tự, CURP chứa thông tin có thể đọc được: ngày sinh, giới tính và bang. Nhờ đó có thể kiểm tra xem ngày được mã hóa có phải là một ngày thực trên lịch hay không; đây là một trong những kiểm tra mà công cụ thực hiện khi tạo mã mẫu.
Các câu hỏi thường gặp
Trình tạo CURP này được dùng để làm gì?
Công cụ tạo một mã ngẫu nhiên theo cùng định dạng với CURP thực, dùng để kiểm thử phần mềm, khởi tạo cơ sở dữ liệu và kiểm tra xem logic xác thực có hoạt động chính xác hay không.
CURP được tạo có liên kết với người thật không?
Không. Mỗi ký tự được chọn ngẫu nhiên hoặc được tính từ những giá trị ngẫu nhiên khác. Kết quả không liên quan đến bất kỳ người thật nào, dù còn sống hay đã qua đời.
Có thể sử dụng CURP được tạo trên biểu mẫu chính thức không?
Không. Chỉ RENAPO mới có thể cấp CURP hợp lệ cho một người thật. Sử dụng mã được tạo trên biểu mẫu chính phủ, tờ khai thuế hoặc bất kỳ tài liệu chính thức nào sẽ là hành vi gian lận.
Vì sao một số CURP kết thúc bằng chữ cái còn một số khác kết thúc bằng chữ số ở vị trí 17?
Vị trí 17 giúp phân biệt những người nếu không sẽ có CURP giống hệt nhau. RENAPO dùng chữ số cho người sinh trước 2000 và chữ cái cho người sinh vào 2000 trở đi.
Vì sao CURP đôi khi có X ở ký tự thứ hai?
Vì bốn ký tự đầu tiên nếu giữ nguyên sẽ tạo thành một từ bị xem là tục trong tiếng Tây Ban Nha. Khi đó, RENAPO thay ký tự thứ hai bằng X, nên BUEI trở thành BXEI.
Công cụ này có lưu các CURP được tạo không?
Không. Mã được tạo trong trình duyệt bằng JavaScript. Không có dữ liệu nào được gửi đến máy chủ hoặc lưu lại.
Chữ số kiểm tra được tính như thế nào?
Mỗi ký tự trong 17 ký tự đầu tiên được chuyển thành một số dựa trên vị trí của nó trong bảng chữ cái cố định gồm 37 ký tự, được nhân với trọng số từ 18 đến 2 rồi cộng lại. Chữ số kiểm tra là (10 − (sum mod 10)) mod 10. Xem ví dụ tính toán ở trên.
Tài liệu tham khảo
- SEGOB (Secretaría de Gobernación), Cổng thông tin CURP chính thức.
- RENAPO (Registro Nacional de Población e Identidad), Hướng dẫn quy phạm về việc cấp CURP.