Hasilkan nomor CPF (Cadastro de Pessoas Físicas) yang valid dan acak untuk tujuan pengujian. Alat ini membuat CPF yang mematuhi format resmi Brasil dan aturan validasi, tanpa menggunakan informasi pribadi yang nyata.
CPF (Cadastro de Pessoas Físicas) adalah pengenal unik yang diberikan kepada warga negara dan penduduk Brasil untuk tujuan perpajakan. Generator ini membuat nomor CPF acak yang valid untuk tujuan pengujian. Penting untuk dicatat bahwa CPF yang dihasilkan ini tidak terkait dengan individu nyata dan hanya boleh digunakan di lingkungan pengujian.
Sebuah CPF terdiri dari 11 digit:
Formatnya biasanya ditampilkan sebagai: XXX.XXX.XXX-XX
Algoritma validasi CPF memastikan integritas nomor tersebut. Berikut cara kerjanya:
Formula untuk menghasilkan CPF yang valid adalah sebagai berikut:
1def generate_cpf():
2 # Menghasilkan 9 digit acak
3 base_cpf = [random.randint(0, 9) for _ in range(9)]
4
5 # Hitung digit cek 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 # Hitung digit cek 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
Generator melakukan langkah-langkah berikut:
Berikut adalah beberapa contoh CPF yang dihasilkan:
Generator CPF berguna dalam berbagai skenario pengembangan dan pengujian perangkat lunak:
Sementara CPF adalah pengenal individu utama di Brasil, ada pengenal lain yang dapat digunakan dalam konteks tertentu:
CPF diperkenalkan di Brasil pada tahun 1965 sebagai bagian dari upaya yang lebih luas untuk memodernisasi sistem perpajakan negara. Awalnya, itu digunakan terutama untuk tujuan pajak penghasilan, tetapi seiring waktu, penggunaannya meluas ke berbagai area birokrasi dan perdagangan Brasil.
Tonggak sejarah utama dalam sejarah CPF:
Saat ini, CPF adalah bagian penting dari interaksi warga negara dan penduduk Brasil dengan layanan pemerintah, lembaga keuangan, dan banyak transaksi komersial.
Berikut adalah potongan kode untuk menghasilkan dan memvalidasi CPF dalam berbagai bahasa pemrograman:
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"Generated CPF: {cpf}")
23print(f"Is valid: {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(`Generated CPF: ${cpf}`);
25console.log(`Is valid: ${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("Generated CPF: " + cpf);
50 System.out.println("Is valid: " + validateCPF(cpf));
51 }
52}
53
Contoh-contoh ini menunjukkan cara menghasilkan dan memvalidasi CPF dalam Python, JavaScript, dan Java. Anda dapat menyesuaikan fungsi-fungsi ini untuk kebutuhan spesifik Anda atau mengintegrasikannya ke dalam sistem yang lebih besar yang memerlukan penanganan CPF.
Saat menggunakan CPF yang dihasilkan, penting untuk memperhatikan poin-poin berikut:
Temukan lebih banyak alat yang mungkin berguna untuk alur kerja Anda