Hasilkan nombor CPF (Cadastro de Pessoas Físicas) yang sah dan rawak untuk tujuan ujian. Alat ini mencipta CPF yang mematuhi format dan peraturan pengesahan rasmi Brazil, tanpa menggunakan sebarang maklumat peribadi yang sebenar.
CPF (Cadastro de Pessoas Físicas) adalah pengenalan unik yang diberikan kepada warganegara dan penduduk Brazil untuk tujuan cukai. Penjana ini mencipta nombor CPF yang sah dan rawak untuk tujuan ujian. Penting untuk diperhatikan bahawa CPF yang dihasilkan ini tidak dikaitkan dengan individu sebenar dan hanya boleh digunakan dalam persekitaran ujian.
Sebuah CPF terdiri daripada 11 digit:
Formatnya biasanya diwakili sebagai: XXX.XXX.XXX-XX
Algoritma pengesahan CPF memastikan integriti nombor tersebut. Berikut adalah cara ia berfungsi:
Formula untuk menghasilkan CPF yang sah adalah seperti berikut:
1def generate_cpf():
2 # Hasilkan 9 digit rawak
3 base_cpf = [random.randint(0, 9) for _ in range(9)]
4
5 # Kira digit semak pertama
6 sum_1 = sum((10 - i) * digit for i, digit in enumerate(base_cpf))
7 check_digit_1 = (sum_1 * 10 % 11) % 10
8
9 # Kira digit semak kedua
10 sum_2 = sum((11 - i) * digit for i, digit in enumerate(base_cpf + [check_digit_1]))
11 check_digit_2 = (sum_2 * 10 % 11) % 10
12
13 return base_cpf + [check_digit_1, check_digit_2]
14
Penjana melakukan langkah-langkah berikut:
Berikut adalah beberapa contoh CPF yang dihasilkan:
Penjana CPF berguna dalam pelbagai senario pembangunan perisian dan ujian:
Walaupun CPF adalah pengenalan individu utama di Brazil, terdapat pengenalan lain yang mungkin digunakan dalam konteks tertentu:
CPF diperkenalkan di Brazil pada tahun 1965 sebagai sebahagian daripada usaha yang lebih luas untuk memodenkan sistem cukai negara. Pada mulanya, ia digunakan terutamanya untuk tujuan cukai pendapatan, tetapi dari masa ke masa, penggunaannya berkembang ke pelbagai bidang birokrasi dan perdagangan Brazil.
Pencapaian penting dalam sejarah CPF:
Hari ini, CPF adalah bahagian penting dalam interaksi warganegara dan penduduk Brazil dengan perkhidmatan kerajaan, institusi kewangan, dan banyak transaksi komersial.
Berikut adalah potongan kod untuk menghasilkan dan mengesahkan CPF dalam pelbagai bahasa pengaturcaraan:
1import random
2
3def generate_cpf():
4 cpf = [random.randint(0, 9) for _ in range(9)]
5 for _ in range(2):
6 value = sum((cpf[num] * ((len(cpf) + 1) - num) for num in range(len(cpf)))) % 11
7 cpf.append(11 - value if value > 1 else 0)
8 return ''.join(map(str, cpf))
9
10def validate_cpf(cpf):
11 numbers = [int(digit) for digit in cpf if digit.isdigit()]
12 if len(numbers) != 11 or len(set(numbers)) == 1:
13 return False
14 for i in range(9, 11):
15 value = sum((numbers[num] * ((i + 1) - num) for num in range(i))) % 11
16 if numbers[i] != (11 - value if value > 1 else 0):
17 return False
18 return True
19
20## Contoh penggunaan
21cpf = generate_cpf()
22print(f"CPF yang Dihasilkan: {cpf}")
23print(f"Adakah sah: {validate_cpf(cpf)}")
24
1function generateCPF() {
2 const cpf = Array.from({length: 9}, () => Math.floor(Math.random() * 10));
3 for (let i = 0; i < 2; i++) {
4 let sum = cpf.reduce((acc, cur, idx) => acc + cur * (cpf.length + 1 - idx), 0);
5 let digit = 11 - (sum % 11);
6 cpf.push(digit > 9 ? 0 : digit);
7 }
8 return cpf.join('');
9}
10
11function validateCPF(cpf) {
12 const numbers = cpf.match(/\d/g).map(Number);
13 if (numbers.length !== 11 || new Set(numbers).size === 1) return false;
14 for (let i = 9; i < 11; i++) {
15 let sum = numbers.slice(0, i).reduce((acc, cur, idx) => acc + cur * (i + 1 - idx), 0);
16 let digit = 11 - (sum % 11);
17 if (numbers[i] !== (digit > 9 ? 0 : digit)) return false;
18 }
19 return true;
20}
21
22// Contoh penggunaan
23const cpf = generateCPF();
24console.log(`CPF yang Dihasilkan: ${cpf}`);
25console.log(`Adakah sah: ${validateCPF(cpf)}`);
26
1import java.util.Random;
2
3public class CPFGenerator {
4 private static final Random random = new Random();
5
6 public static String generateCPF() {
7 int[] cpf = new int[11];
8 for (int i = 0; i < 9; i++) {
9 cpf[i] = random.nextInt(10);
10 }
11 cpf[9] = calculateCheckDigit(cpf, 10);
12 cpf[10] = calculateCheckDigit(cpf, 11);
13 return formatCPF(cpf);
14 }
15
16 private static int calculateCheckDigit(int[] cpf, int factor) {
17 int sum = 0;
18 for (int i = 0; i < factor - 1; i++) {
19 sum += cpf[i] * (factor - i);
20 }
21 int result = 11 - (sum % 11);
22 return result > 9 ? 0 : result;
23 }
24
25 private static String formatCPF(int[] cpf) {
26 return String.format("%d%d%d.%d%d%d.%d%d%d-%d%d",
27 cpf[0], cpf[1], cpf[2], cpf[3], cpf[4], cpf[5], cpf[6], cpf[7], cpf[8], cpf[9], cpf[10]);
28 }
29
30 public static boolean validateCPF(String cpf) {
31 cpf = cpf.replaceAll("[^0-9]", "");
32 if (cpf.length() != 11) return false;
33 int[] numbers = cpf.chars().map(Character::getNumericValue).toArray();
34 if (allEqual(numbers)) return false;
35 int digit10 = calculateCheckDigit(numbers, 10);
36 int digit11 = calculateCheckDigit(numbers, 11);
37 return numbers[9] == digit10 && numbers[10] == digit11;
38 }
39
40 private static boolean allEqual(int[] array) {
41 for (int i = 1; i < array.length; i++) {
42 if (array[i] != array[0]) return false;
43 }
44 return true;
45 }
46
47 public static void main(String[] args) {
48 String cpf = generateCPF();
49 System.out.println("CPF yang Dihasilkan: " + cpf);
50 System.out.println("Adakah sah: " + validateCPF(cpf));
51 }
52}
53
Contoh-contoh ini menunjukkan cara untuk menghasilkan dan mengesahkan CPF dalam Python, JavaScript, dan Java. Anda boleh menyesuaikan fungsi ini mengikut keperluan khusus anda atau mengintegrasikannya ke dalam sistem yang lebih besar yang memerlukan pengendalian CPF.
Apabila menggunakan CPF yang dihasilkan, penting untuk menjaga perkara-perkara berikut:
Temui lebih banyak alat yang mungkin berguna untuk aliran kerja anda