Δημιουργήστε έγκυρους, τυχαίους αριθμούς CPF (Cadastro de Pessoas Físicas) για σκοπούς δοκιμών. Αυτό το εργαλείο δημιουργεί CPFs που συμμορφώνονται με την επίσημη βραζιλιάνικη μορφή και κανόνες επικύρωσης, χωρίς να χρησιμοποιεί πραγματικές προσωπικές πληροφορίες.
Το CPF (Cadastro de Pessoas Físicas) είναι ένας μοναδικός αναγνωριστικός αριθμός που αποδίδεται στους Βραζιλιάνους πολίτες και κατοίκους για φορολογικούς σκοπούς. Αυτή η γεννήτρια δημιουργεί έγκυρους, τυχαίους αριθμούς CPF για σκοπούς δοκιμών. Είναι σημαντικό να σημειωθεί ότι αυτοί οι παραγόμενοι CPFs δεν σχετίζονται με πραγματικά άτομα και θα πρέπει να χρησιμοποιούνται μόνο σε περιβάλλοντα δοκιμών.
Ένα CPF αποτελείται από 11 ψηφία:
Η μορφή αναπαρίσταται συνήθως ως: XXX.XXX.XXX-XX
Ο αλγόριθμος επικύρωσης CPF διασφαλίζει την ακεραιότητα του αριθμού. Δείτε πώς λειτουργεί:
Ο τύπος για τη δημιουργία ενός έγκυρου CPF είναι ως εξής:
1def generate_cpf():
2 # Δημιουργία 9 τυχαίων ψηφίων
3 base_cpf = [random.randint(0, 9) for _ in range(9)]
4
5 # Υπολογισμός πρώτου ψηφίου ελέγχου
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 # Υπολογισμός δεύτερου ψηφίου ελέγχου
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
Η γεννήτρια εκτελεί τα εξής βήματα:
Ακολουθούν μερικά παραδείγματα παραγόμενων CPFs:
Η γεννήτρια CPF είναι χρήσιμη σε διάφορα σενάρια ανάπτυξης λογισμικού και δοκιμών:
Ενώ το CPF είναι ο κύριος αναγνωριστικός αριθμός ατόμου στη Βραζιλία, υπάρχουν άλλοι αναγνωριστικοί αριθμοί που μπορεί να χρησιμοποιηθούν σε συγκεκριμένα συμφραζόμενα:
Το CPF εισήχθη στη Βραζιλία το 1965 στο πλαίσιο μιας ευρύτερης προσπάθειας εκσυγχρονισμού του φορολογικού συστήματος της χώρας. Αρχικά, χρησιμοποιούνταν κυρίως για φορολογικούς σκοπούς, αλλά με την πάροδο του χρόνου, η χρήση του επεκτάθηκε σε διάφορους άλλους τομείς της βραζιλιάνικης γραφειοκρατίας και εμπορίου.
Κύρια ορόσημα στην ιστορία του CPF:
Σήμερα, το CPF είναι ένα απαραίτητο μέρος των αλληλεπιδράσεων των Βραζιλιάνων πολιτών και κατοίκων με τις κυβερνητικές υπηρεσίες, τα χρηματοπιστωτικά ιδρύματα και πολλές εμπορικές συναλλαγές.
Ακολουθούν αποσπάσματα κώδικα για τη δημιουργία και επικύρωση CPFs σε διάφορες γλώσσες προγραμματισμού:
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## Παράδειγμα χρήσης
21cpf = generate_cpf()
22print(f"Παραγόμενος CPF: {cpf}")
23print(f"Είναι έγκυρος: {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// Παράδειγμα χρήσης
23const cpf = generateCPF();
24console.log(`Παραγόμενος CPF: ${cpf}`);
25console.log(`Είναι έγκυρος: ${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: " + cpf);
50 System.out.println("Είναι έγκυρος: " + validateCPF(cpf));
51 }
52}
53
Αυτά τα παραδείγματα δείχνουν πώς να δημιουργήσετε και να επικυρώσετε CPFs σε Python, JavaScript και Java. Μπορείτε να προσαρμόσετε αυτές τις λειτουργίες στις συγκεκριμένες ανάγκες σας ή να τις ενσωματώσετε σε μεγαλύτερα συστήματα που απαιτούν χειρισμό CPF.
Όταν χρησιμοποιείτε παραγόμενους CPFs, είναι κρίσιμο να έχετε κατά νου τα εξής σημεία:
Ανακαλύψτε περισσότερα εργαλεία που μπορεί να είναι χρήσιμα για τη ροή εργασίας σας