Penjana CPF untuk Ujian dan Pengesahan Data Perisian
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.
title
Dokumentasi
Penjana CPF
Pengenalan
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.
Struktur CPF
Sebuah CPF terdiri daripada 11 digit:
- 9 digit pertama adalah nombor asas
- 2 digit terakhir adalah digit semak
Formatnya biasanya diwakili sebagai: XXX.XXX.XXX-XX
Algoritma Pengesahan CPF
Algoritma pengesahan CPF memastikan integriti nombor tersebut. Berikut adalah cara ia berfungsi:
- Kalikan 9 digit pertama dengan berat (10 hingga 2)
- Jumlahkan hasilnya
- Hitung baki jumlah dibahagi dengan 11
- Jika baki kurang daripada 2, digit semak pertama adalah 0; jika tidak, ia adalah 11 tolak baki
- Ulang proses untuk 10 digit pertama (termasuk digit semak pertama) dengan berat 11 hingga 2
- Hitung digit semak kedua menggunakan peraturan yang sama seperti yang pertama
Cara Menggunakan Penjana Ini
- Klik butang "Jana CPF"
- CPF yang sah dan rawak akan dipaparkan
- Anda boleh menyalin CPF yang dihasilkan untuk digunakan dalam senario ujian anda
Formula
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
Pengiraan
Penjana melakukan langkah-langkah berikut:
- Hasilkan 9 digit rawak
- Kira digit semak pertama menggunakan algoritma yang diterangkan di atas
- Kira digit semak kedua
- Gabungkan semua digit untuk membentuk CPF lengkap
Contoh
Berikut adalah beberapa contoh CPF yang dihasilkan:
- 123.456.789-09
- 987.654.321-00
- 111.222.333-96
Kes Penggunaan
Penjana CPF berguna dalam pelbagai senario pembangunan perisian dan ujian:
- Ujian Pangkalan Data: Isi pangkalan data ujian dengan nombor CPF yang sah
- Pengesahan Borang: Uji pengesahan input untuk borang pendaftaran pengguna Brazil
- Ujian API: Gunakan CPF yang dihasilkan dalam permintaan API yang memerlukan pengenalan Brazil yang sah
- Ujian Prestasi: Hasilkan set besar CPF yang unik dan sah untuk ujian beban
- Ujian UI/UX: Pastikan format dan paparan nombor CPF yang betul dalam antara muka pengguna
Alternatif
Walaupun CPF adalah pengenalan individu utama di Brazil, terdapat pengenalan lain yang mungkin digunakan dalam konteks tertentu:
- RG (Registro Geral): Dokumen identiti yang dikeluarkan oleh negeri
- CNPJ (Cadastro Nacional da Pessoa Jurídica): Digunakan untuk perniagaan dan entiti undang-undang
- PIS/PASEP: Digunakan untuk tujuan berkaitan pekerjaan
Sejarah
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:
- 1965: CPF diperkenalkan untuk individu
- 1972: CPF menjadi wajib untuk semua individu yang membayar cukai
- 1990-an: CPF mula digunakan secara lebih meluas dalam transaksi komersial dan kewangan
- 2000-an: Sistem digital mengintegrasikan CPF ke dalam kehidupan seharian di Brazil
Hari ini, CPF adalah bahagian penting dalam interaksi warganegara dan penduduk Brazil dengan perkhidmatan kerajaan, institusi kewangan, dan banyak transaksi komersial.
Contoh Kod
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.
Pertimbangan Undang-Undang dan Etika
Apabila menggunakan CPF yang dihasilkan, penting untuk menjaga perkara-perkara berikut:
- CPF yang dihasilkan adalah untuk tujuan ujian sahaja dan tidak seharusnya digunakan untuk menyamar individu sebenar atau untuk sebarang aktiviti penipuan.
- Labelkan dengan jelas sebarang data ujian yang mengandungi CPF yang dihasilkan untuk mengelakkan kekeliruan dengan data peribadi sebenar.
- Sedar akan undang-undang dan peraturan perlindungan data di kawasan anda apabila mengendalikan walaupun pengenalan peribadi palsu.
- Dalam persekitaran pengeluaran, sentiasa gunakan CPF yang sebenar dan disahkan yang diberikan oleh pengguna atau sumber yang diberi kuasa.
- Laksanakan langkah-langkah keselamatan yang betul untuk melindungi CPF yang sebenar dan yang dihasilkan dalam sistem anda.
Rujukan
- Receita Federal do Brasil. "CPF - Cadastro de Pessoas Físicas." https://www.gov.br/receitafederal/pt-br/assuntos/orientacao-tributaria/cadastros/cpf
- Serpro. "Validador de CPF." https://www.serpro.gov.br/links-fixos-superiores/validador-cpf
- Ministério da Fazenda. "História do CPF." https://www.gov.br/fazenda/pt-br/assuntos/receita-federal
- Lei nº 4.862, de 29 de novembro de 1965. "Altera a legislação do impôsto de renda, adota diversas medidas de ordem fiscal e fazendária, e dá outras providências."
Maklum balas
Klik toast maklum balas untuk mula memberi maklum balas tentang alat ini
Alat Berkaitan
Temui lebih banyak alat yang mungkin berguna untuk aliran kerja anda