Trình tạo CURP ngẫu nhiên cho mục đích kiểm tra hiệu quả
Tạo ra các CURP hợp lệ, ngẫu nhiên (Clave Única de Registro de Población) cho mục đích kiểm tra. Công cụ này tạo ra các CURP tuân thủ định dạng và quy tắc xác thực chính thức của Mexico, mà không sử dụng thông tin cá nhân thực.
Tạo CURP
Tài liệu hướng dẫn
Trình tạo CURP
Giới thiệu
CURP (Clave Única de Registro de Población) là một mã alphanumeric duy nhất được sử dụng ở Mexico cho các mục đích nhận dạng. Công cụ này tạo ra các CURP ngẫu nhiên hợp lệ cho các tình huống thử nghiệm, tuân thủ định dạng và quy tắc xác thực chính thức. Quan trọng là lưu ý rằng các CURP được tạo ra này không liên quan đến các cá nhân thực và chỉ nên được sử dụng cho các mục đích thử nghiệm.
Cấu trúc của CURP
Một CURP bao gồm 18 ký tự theo định dạng sau:
- Chữ cái đầu tiên của họ cha
- Nguyên âm đầu tiên của họ cha (không bao gồm chữ cái đầu tiên)
- Chữ cái đầu tiên của họ mẹ
- Chữ cái đầu tiên của tên 5-10. Ngày sinh (định dạng YYMMDD)
- Giới tính (H cho nam, M cho nữ) 12-13. Mã hai chữ cái cho tiểu bang sinh 14-16. Phụ âm nội bộ đầu tiên của từng thành phần tên (họ cha, họ mẹ, tên)
- Chữ số phân biệt (0-9 cho những người sinh trước năm 2000, A-Z cho những người sinh từ năm 2000 trở đi)
- Chữ số kiểm tra (0-9)
Thuật toán để tạo CURP ngẫu nhiên
- Tạo các chữ cái ngẫu nhiên cho các thành phần tên
- Tạo một ngày sinh ngẫu nhiên
- Chọn ngẫu nhiên giới tính
- Chọn ngẫu nhiên một mã tiểu bang hợp lệ
- Tạo các phụ âm ngẫu nhiên cho các thành phần tên nội bộ
- Xác định chữ số phân biệt dựa trên năm sinh
- Tính toán chữ số kiểm tra
- Kết hợp tất cả các thành phần để tạo thành CURP
Quy tắc xác thực
- Tất cả các ký tự chữ cái phải viết hoa
- Ngày sinh phải là một ngày hợp lệ (bao gồm cả việc xem xét năm nhuận)
- Mã tiểu bang phải là mã tiểu bang Mexico hợp lệ
- Chữ số phân biệt phải tương ứng với năm sinh
- Chữ số kiểm tra phải được tính toán chính xác
- Xử lý các trường hợp đặc biệt cho tên (ví dụ: họ có một chữ cái, tên có chữ cái Ñ)
Các trường hợp sử dụng
-
Kiểm tra phần mềm: Các nhà phát triển có thể sử dụng công cụ này để tạo ra các CURP hợp lệ cho việc thử nghiệm hệ thống đăng ký người dùng, hoạt động cơ sở dữ liệu, hoặc bất kỳ phần mềm nào yêu cầu đầu vào CURP.
-
Bảo mật dữ liệu: Khi trình bày phần mềm hoặc trình bày dữ liệu, việc sử dụng CURP ngẫu nhiên giúp bảo vệ quyền riêng tư của cá nhân.
-
Kiểm tra hiệu suất: Tạo ra các tập hợp CURP độc nhất lớn để kiểm tra hiệu suất hệ thống dưới tải.
-
Đào tạo và giáo dục: Sử dụng CURP được tạo ra trong tài liệu giáo dục về các hệ thống nhận dạng của Mexico mà không sử dụng dữ liệu cá nhân thực.
Lịch sử của CURP ở Mexico
Hệ thống CURP được giới thiệu vào năm 1996 bởi chính phủ Mexico như một phần trong nỗ lực hiện đại hóa và chuẩn hóa nhận dạng cá nhân. Nó đã thay thế nhiều hệ thống nhận dạng khác nhau và trở thành một yếu tố quan trọng trong bộ máy hành chính Mexico, được sử dụng cho mọi thứ từ việc đăng ký trường học đến khai thuế.
Trong những năm qua, hệ thống CURP đã trải qua một số sửa đổi:
- Năm 2011, chữ số phân biệt được giới thiệu để phân biệt giữa những người sinh trước và sau năm 2000.
- Năm 2012, thuật toán tính toán chữ số kiểm tra đã được sửa đổi để cải thiện tính độc nhất.
Ví dụ
Dưới đây là các ví dụ mã để tạo CURP ngẫu nhiên trong nhiều ngôn ngữ lập trình khác nhau:
1import random
2import string
3from datetime import datetime, timedelta
4
5def generate_curp():
6 # Tạo các thành phần tên
7 paternal = random.choice(string.ascii_uppercase) + random.choice('AEIOU')
8 maternal = random.choice(string.ascii_uppercase)
9 given = random.choice(string.ascii_uppercase)
10
11 # Tạo ngày sinh
12 start_date = datetime(1940, 1, 1)
13 end_date = datetime.now()
14 random_date = start_date + timedelta(days=random.randint(0, (end_date - start_date).days))
15 date_str = random_date.strftime("%y%m%d")
16
17 # Tạo giới tính
18 gender = random.choice(['H', 'M'])
19
20 # Tạo mã tiểu bang
21 states = ['AS', 'BC', 'BS', 'CC', 'CL', 'CM', 'CS', 'CH', 'DF', 'DG', 'GT', 'GR', 'HG', 'JC', 'MC', 'MN', 'MS', 'NT', 'NL', 'OC', 'PL', 'QT', 'QR', 'SP', 'SL', 'SR', 'TC', 'TS', 'TL', 'VZ', 'YN', 'ZS']
22 state = random.choice(states)
23
24 # Tạo phụ âm
25 consonants = ''.join(random.choices(string.ascii_uppercase.translate(str.maketrans('', '', 'AEIOU')), k=3))
26
27 # Tạo chữ số phân biệt
28 diff_digit = random.choice(string.digits) if int(date_str[:2]) < 20 else random.choice(string.ascii_uppercase)
29
30 # Tạo chữ số kiểm tra (đơn giản hóa cho ví dụ này)
31 check_digit = random.choice(string.digits)
32
33 return f"{paternal}{maternal}{given}{date_str}{gender}{state}{consonants}{diff_digit}{check_digit}"
34
35## Tạo và in ra một CURP ngẫu nhiên
36print(generate_curp())
37
1function generateCURP() {
2 const vowels = 'AEIOU';
3 const consonants = 'BCDFGHJKLMNPQRSTVWXYZ';
4 const states = ['AS', 'BC', 'BS', 'CC', 'CL', 'CM', 'CS', 'CH', 'DF', 'DG', 'GT', 'GR', 'HG', 'JC', 'MC', 'MN', 'MS', 'NT', 'NL', 'OC', 'PL', 'QT', 'QR', 'SP', 'SL', 'SR', 'TC', 'TS', 'TL', 'VZ', 'YN', 'ZS'];
5
6 const randomLetter = () => String.fromCharCode(65 + Math.floor(Math.random() * 26));
7 const randomVowel = () => vowels[Math.floor(Math.random() * vowels.length)];
8 const randomConsonant = () => consonants[Math.floor(Math.random() * consonants.length)];
9
10 const paternal = randomLetter() + randomVowel();
11 const maternal = randomLetter();
12 const given = randomLetter();
13
14 const now = new Date();
15 const start = new Date(1940, 0, 1);
16 const randomDate = new Date(start.getTime() + Math.random() * (now.getTime() - start.getTime()));
17 const dateStr = randomDate.toISOString().slice(2, 10).replace(/-/g, '');
18
19 const gender = Math.random() < 0.5 ? 'H' : 'M';
20 const state = states[Math.floor(Math.random() * states.length)];
21
22 const internalConsonants = randomConsonant() + randomConsonant() + randomConsonant();
23
24 const diffDigit = parseInt(dateStr.slice(0, 2)) < 20 ?
25 Math.floor(Math.random() * 10).toString() :
26 String.fromCharCode(65 + Math.floor(Math.random() * 26));
27
28 const checkDigit = Math.floor(Math.random() * 10).toString();
29
30 return `${paternal}${maternal}${given}${dateStr}${gender}${state}${internalConsonants}${diffDigit}${checkDigit}`;
31}
32
33// Tạo và ghi lại một CURP ngẫu nhiên
34console.log(generateCURP());
35
Các lựa chọn thay thế ở các quốc gia khác
Trong khi CURP là duy nhất cho Mexico, các quốc gia khác có các hệ thống nhận dạng tương tự:
- Hoa Kỳ: Số An sinh xã hội (SSN)
- Canada: Số Bảo hiểm xã hội (SIN)
- Ấn Độ: Số Aadhaar
- Brazil: Cadastro de Pessoas Físicas (CPF)
Mỗi hệ thống có cấu trúc và quy tắc riêng, nhưng chúng phục vụ các mục đích tương tự ở các quốc gia tương ứng.
Tài liệu tham khảo
- SEGOB (Secretaría de Gobernación). "CURP - Trámites." Gobierno de México, https://www.gob.mx/curp/. Truy cập ngày 4 tháng 8 năm 2024.
- RENAPO (Registro Nacional de Población e Identidad). "Instructivo Normativo para la Asignación de la Clave Única de Registro de Población." Gobierno de México, https://www.gob.mx/cms/uploads/attachment/file/79053/InstructivoNormativoCURP.pdf. Truy cập ngày 4 tháng 8 năm 2024.
Phản hồi
Nhấp vào hộp thoại phản hồi để bắt đầu đưa ra phản hồi về công cụ này
Công cụ Liên quan
Khám phá thêm các công cụ có thể hữu ích cho quy trình làm việc của bạn