Перейти до вмісту

Генератор CPF - Створення дійсних бразильських ідентифікаційних номерів для тестування

Безкоштовний генератор CPF створює дійсні бразильські ідентифікаційні номери, які проходять алгоритми перевірки. Ідеально підходить для тестування форм, API та баз даних без використання реальних особистих даних.

Натисніть, щоб згенерувати дійсний бразильський номер CPF для тестування

Калькулятор завантаження...
📚

Документація

Генератор CPF - Створення дійсних бразильських ідентифікаційних номерів платників податків для тестування

Чому вам потрібен генератор CPF для тестування

При розробці додатків для бразильського ринку ви швидко зіткнетеся з поширеною проблемою: тестування форм та логіки перевірки без компрометації реальних даних користувача. Саме тому генератор CPF стає незамінним.

CPF (Cadastro de Pessoas Físicas) - це унікальний 11-значний ідентифікаційний номер Бразилії, що видається громадянам та резидентам для податкових цілей. Цей інструмент створює математично коректні, випадкові номери CPF, які проходять офіційний алгоритм перевірки Бразилії — ідеально підходить для заповнення тестових баз даних, перевірки вхідних форм та проведення автоматизованих тестів без порушення конфіденційності.

Критичне обмеження: Згенеровані CPF призначені лише для тестових середовищ. Вони не пов'язані з реальними особами і не повинні використовуватися в робочих системах або в шахрайських цілях. Їхня цінність полягає в тому, що вони проходять перевірку, при цьому повністю відокремлюючи тестові дані від реальної особистої інформації.

Розуміння структури та формату CPF

Дійсний CPF складається з 11 цифр з певною структурою:

  • Перші 9 цифр: Базові ідентифікаційні номери
  • Останні 2 цифри: Контрольні цифри для перевірки
  • Стандартний формат: XXX.XXX.XXX-XX (з крапками та дефісом)

Приклад: 123.456.789-09

Контрольні цифри забезпечують математичну достовірність номера CPF, запобігаючи помилкам та введенню недійсних записів у бразильських системах.

Як працює перевірка CPF

Алгоритм перевірки CPF використовує систему контрольних цифр за модулем 11 з ваговими коефіцієнтами для забезпечення цілісності номера. Розуміння цього алгоритму є crucial при впровадженні перевірки CPF у ваших додатках.

Пояснення процесу перевірки

Алгоритм обчислює дві контрольні цифри (останні дві цифри CPF) на основі перших дев'яти цифр:

Обчислення першої контрольної цифри:

  1. Помножити перші 9 цифр на спадні вагові коефіцієнти (10, 9, 8, 7, 6, 5, 4, 3, 2)
  2. Підсумувати всі результати множення
  3. Обчислити залишок при діленні на 11
  4. Якщо залишок < 2, контрольна цифра дорівнює 0; інакше це 11 мінус залишок

Обчислення другої контрольної цифри:

  1. Повторити процес для перших 9 цифр плюс перша контрольна цифра (всього 10 цифр)
  2. Використати вагові коефіцієнти 11, 10, 9, 8, 7, 6, 5, 4, 3, 2
  3. Застосувати ту саму логіку залишку

Ця двоступенева перевірка виявляє більшість помилок при переписуванні та запобігає проходженню випадкових номерів як дійсних CPF. Алгоритм задокументований у Lei nº 4.862/1965, яка встановила систему CPF.

Чому це важливо для розробників

При створенні перевірки CPF розробники часто пропускають крайовий випадок, коли залишок дорівнює 0 або 1 — ці випадки повинні відображатися як контрольна цифра 0, а не 10 або 11. Це поширене джерело помилок при перевірці. Формула (sum * 10 % 11) % 10 елегантно вирішує цю крайову ситуацію, забезпечуючи, що результат ніколи не перевищує 9.

Як використовувати цей генератор CPF

Генерування дійсних тестових CPF займає секунди:

  1. Натисніть кнопку "Згенерувати CPF"
  2. Перегляньте дійсний, випадковий номер CPF, відображений у стандартному форматі XXX.XXX.XXX-XX
  3. Скопіюйте згенерований номер одним натисканням
  4. Вставте безпосередньо у форми тестування, API-запити або бази даних

Кожен згенерований 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

Обчислення

Генератор виконує наступні кроки:

  1. Генерування 9 випадкових цифр
  2. Обчислення першої контрольної цифри за описаним вище алгоритмом
  3. Обчислення другої контрольної цифри
  4. Об'єднання всіх цифр для формування повного CPF

Приклади

Ось кілька прикладів згенерованих CPF:

  1. 123.456.789-09
  2. 987.654.321-00
  3. 111.222.333-96

Поширені випадки використання для тестування номерів CPF

На основі реальних сценаріїв розробки, ось коли вам знадобляться згенеровані номери CPF:

Сценарії розробки та тестування

Наповнення бази даних та міграції: При налаштуванні локальних або проміжних середовищ вам потрібні реалістичні тестові дані. Згенеровані CPF дозволяють створити сотні або тисячі тестових записів користувачів без використання реальної особистої інформації. Це особливо корисно при тестуванні обмежень бази даних та унікальних індексів стовпців CPF.

Тестування перевірки форм: Бразильські реєстраційні форми зазвичай вимагають перевірки CPF як на стороні клієнта, так і на стороні сервера. Тестування крайніх випадків — як правильно відформатованих, але недійсних CPF, або CPF з однаковими цифрами (111.111.111-11) — допомагає виявити помилки перевірки до виходу в продакшн. Згенеровані CPF надають дійсні тестові випадки для перевірки коректності логіки перевірки.

Тестування інтеграції API: При створенні інтеграцій з бразильськими платіжними шлюзами, фінансовими службами або державними API часто потрібні дійсні номери CPF у тестових запитах. Використання згенерованих CPF зберігає незалежність тестового набору від реальних даних користувачів.

Навантажувальне та продуктивне тестування: Для стрес-тестування систем, що обробляють дані бразильських користувачів, потрібні великі обсяги унікальних, дійсних CPF. Генерування тисяч тестових CPF дозволяє імітувати реалістичне навантаження без проблем з конфіденційністю.

Перевірка UI/UX: Тестування відображення, маскування та форматування CPF на інтерфейсі в різних розмірах екрана та контекстах. Згенеровані CPF допомагають перевірити, що логіка форматування (додавання крапок і дефісів) працює послідовно.

Поширені помилки, яких слід уникати

Одна з поширених помилок розробників — забування про те, що CPF з однаковими цифрами (наприклад, 000.000.000-00 або 111.111.111-11) технічно дійсні за алгоритмом, але відхиляються реальними бразильськими системами. При тестуванні включайте перевірку цих відомих недійсних шаблонів, навіть якщо вони проходять математичну перевірку.

Інша проблема: згенеровані CPF чудово підходять для тестування логіки перевірки, але не допоможуть перевірити фактичні пошуки CPF у державних базах даних. Для інтеграційних тестів, що запитують реальні бразильські державні API, вам потрібно використовувати спеціальні тестові CPF, надані цими службами (наприклад, тестове середовище Serpro).

Пов'язані бразильські системи ідентифікації

Хоча CPF є основним індивідуальним ідентифікатором у Бразилії, розуміння пов'язаних систем допомагає при створенні всебічних бразильських додатків:

RG (Registro Geral): Номери документів, що посвідчують особу, видані штатом. На відміну від CPF, який є федеральним і має послідовний формат, номери RG різняться залежно від штату і не мають стандартизованого алгоритму перевірки. При створенні додатків для Бразилії ви зазвичай вимагаєте CPF для перевірки на backend і можете приймати RG як додаткову ідентифікацію.

CNPJ (Cadastro Nacional da Pessoa Jurídica): Еквівалент CPF для бізнесу, що використовується для компаній та юридичних осіб. CNPJ використовує подібний алгоритм перевірки modulo-11, але має 14 цифр замість 11. Якщо ви створюєте B2B додатки для Бразилії, вам потрібно обробляти як CPF (для індивідуальних власників бізнесу), так і CNPJ (для зареєстрованих компаній).

PIS/PASEP/NIT: Ідентифікаційні номери, пов'язані з працевлаштуванням, що використовуються соціальною системою безпеки Бразилії. Вони рідше вимагаються в загальних додатках, але є суттєвими для систем HR та нарахування зарплати.

Еволюція CPF у Бразилії

Система CPF була запроваджена Законом № 4.862/1965 як частина модернізації податкової системи Бразилії. Те, що розпочалося як простий податковий ідентифікатор, стало фактичним національним ідентифікаційним номером Бразилії.

Ключові віхи:

  • 1965: Введення CPF для подання декларацій про прибуток
  • 1972: Зроблено обов'язковим для всіх платників податків
  • 1990-ті: Прискорення комерційного впровадження — банки та роздрібні торговці починають вимагати CPF для транзакцій
  • 2000-ні: Цифрова трансформація робить CPF необхідним для онлайн-послуг
  • 2020-ті: CPF вимагається майже для всіх державних служб, фінансових транзакцій і навіть споживчих покупок

Це розширення пояснює, чому перевірка CPF критична для будь-якого додатку, що обслуговує бразильських користувачів — це вже не просто податковий ідентифікатор, а спосіб ідентифікації бразильців у незліченних контекстах. При тестуванні цих систем наявність дійсних номерів CPF є суттєвою для реалістичних тестових сценаріїв.

Приклади коду для генерації та перевірки CPF

Якщо вам потрібно безпосередньо інтегрувати генерацію та перевірку CPF у ваш додаток, ось реалізації, готові до виробництва, на популярних мовах. Кожен приклад включає як функції генерації, так і перевірки, щоб ви могли реалізувати повний робочий процес.

Ці реалізації дотримуються офіційного алгоритму Receita Federal і включають обробку крайніх випадків, про які йшлося раніше (залишки 0 та 1 відображаються на контрольну цифру 0).

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

Приклад використання

cpf = generate_cpf() print(f"Згенерований CPF: {cpf}") print(f"Валідний: {validate_cpf(cpf)}")

1
2

javascript function generateCPF() { const cpf = Array.from({length: 9}, () => Math.floor(Math.random() * 10)); for (let i = 0; i < 2; i++) { let sum = cpf.reduce((acc, cur, idx) => acc + cur * (cpf.length + 1 - idx), 0); let digit = 11 - (sum % 11); cpf.push(digit > 9 ? 0 : digit); } return cpf.join(''); }

function validateCPF(cpf) { const numbers = cpf.match(/\d/g).map(Number); if (numbers.length !== 11 || new Set(numbers).size === 1) return false; for (let i = 9; i < 11; i++) { let sum = numbers.slice(0, i).reduce((acc, cur, idx) => acc + cur * (i + 1 - idx), 0); let digit = 11 - (sum % 11); if (numbers[i] !== (digit > 9 ? 0 : digit)) return false; } return true; }

// Приклад використання const cpf = generateCPF(); console.log(Згенерований CPF: ${cpf}); console.log(Валідний: ${validateCPF(cpf)});

1
2

java import java.util.Random;

public class CPFGenerator { private static final Random random = new Random();

public static String generateCPF() {
    int[] cpf = new int[11];
    for (int i = 0; i < 9; i++) {
        cpf[i] = random.nextInt(10);
    }
    cpf[9] = calculateCheckDigit(cpf, 10);
    cpf[10] = calculateCheckDigit(cpf, 11);
    return formatCPF(cpf);
}

private static int calculateCheckDigit(int[] cpf, int factor) {
    int sum = 0;
    for (int i = 0; i < factor - 1; i++) {
        sum += cpf[i] * (factor - i);
    }
    int result = 11 - (sum % 11);
    return result > 9 ? 0 : result;
}

private static String formatCPF(int[] cpf) {
    return String.format("%d%d%d.%d%d%d.%d%d%d-%d%d",
            cpf[0], cpf[1], cpf[2], cpf[3], cpf[4], cpf[5], cpf[6], cpf[7], cpf[8], cpf[9], cpf[10]);
}

public static boolean validateCPF(String cpf) {
    cpf = cpf.replaceAll("[^0-9]", "");
    if (cpf.length() != 11) return false;
    int[] numbers = cpf.chars().map(Character::getNumericValue).toArray();
    if (allEqual(numbers)) return false;
    int digit10 = calculateCheckDigit(numbers, 10);
    int digit11 = calculateCheckDigit(numbers, 11);
    return numbers[9] == digit10 && numbers[10] == digit11;
}

private static boolean allEqual(int[] array) {
    for (int i = 1; i < array.length; i++) {
        if (array[i] != array[0]) return false;
    }
    return true;
}

public static void main(String[] args) {
    String cpf = generateCPF();
    System.out.println("Згенерований CPF: " + cpf);
    System.out.println("Валідний: " + validateCPF(cpf));
}

}


**Використання цих реалізацій:**

- Функції перевірки працюють як з форматованим (XXX.XXX.XXX-XX), так і з нерозформатованим (XXXXXXXXXXX) введенням
- Додайте перевірки відомих недійсних шаблонів (всі однакові цифри) у виробничому коді
- Розгляньте використання перевірених бібліотек, таких як `validate-docbr` (Python) або `cpf-cnpj-validator` (JavaScript) для виробничих систем — вони обробляють крайні випадки та добре протестовані
- Ці приклади чудово підходять для розуміння алгоритму або створення полегшених реалізацій без зовнішніх залежностей

## Часті запитання про генерацію CPF

### Чи є генератор CPF безкоштовним?
Так, цей інструмент повністю безкоштовний і не вимагає реєстрації. Генеруйте стільки номерів CPF, скільки вам потрібно для тестування. Немає обмежень на використання або прихованих платежів.

### Чи пов'язані згенеровані номери CPF з реальними людьми?
Ні. Хоча номери математично коректні та проходять алгоритми перевірки, вони випадково згенеровані і не зареєстровані в бразильській Receita Federal. Вони існують виключно як тестові дані і повинні використовуватися лише в середовищах розробки та тестування.

### Чи можна використовувати згенеровані CPF у виробничих системах?
Ніколи. Виробничі системи повинні використовувати реальні, перевірені CPF, надані справжніми користувачами через легітимні процеси реєстрації. Використання згенерованих CPF у живих системах порушує принципи цілісності даних і може спричинити серйозні юридичні проблеми відповідно до [бразильського закону про захист даних (LGPD)](https://www.gov.br/cidadania/pt-br/acesso-a-informacao/lgpd).

### Як генератор забезпечує дійсність CPF?
Інструмент реалізує офіційний алгоритм перевірки CPF, як визначено Receita Federal. Він обчислює обидві контрольні цифри за допомогою зваженої формули за модулем 11, забезпечуючи перевірку кожного згенерованого номера за стандартними тестами. Алгоритм такий самий, як той, що використовується урядовими системами та фінансовими установами Бразилії.

### У чому різниця між CPF і CNPJ?
CPF (Cadastro de Pessoas Físicas) ідентифікує фізичних осіб — громадян і резидентів. CNPJ (Cadastro Nacional da Pessoa Jurídica) ідентифікує підприємства та юридичні особи. Думайте про CPF як про щось подібне до номера соціального страхування в США, а CNPJ — як ідентифікаційний номер роботодавця (EIN). Вам знадобляться різні генератори для кожного типу.

### Чи законно генерувати тестові номери CPF?
Генерування номерів CPF для легітимного тестування та розробки програмного забезпечення є законним. Незаконно використовувати їх шахрайськи — для імітації реальних людей, здійснення крадіжки особистості або обходу заходів безпеки. Тримайте згенеровані CPF чітко позначеними як тестові дані та обмежте їх використання середовищами, не призначеними для виробництва.

### Як щодо дублікатів CPF?
Хоча теоретично це можливо, дублікати трапляються надзвичайно рідко. Існує приблизно 100 мільярдів можливих коректних комбінацій CPF (з урахуванням обмежень контрольної цифри), тому ймовірність генерації того самого номера двічі становить близько 1 до 100 мільярдів за спробу. У практичних сценаріях тестування дублікати не будуть проблемою, якщо ви не генеруєте сотні мільйонів CPF.

### Чи працюють згенеровані CPF з бібліотеками перевірки?
Так. Згенеровані CPF проходять перевірку в популярних бібліотеках різними мовами — `validate-docbr` для Python, `cpf-cnpj-validator` для JavaScript, `geekcom/validator-docs` для PHP та інших. Вони задовольняють математичні вимоги, які перевіряють ці бібліотеки. Однак вони не пройдуть перевірку "реального CPF" у державних базах даних, що саме й потрібно для ізольованого тестування.

### Чому деякі коректні CPF відхиляються моєю перевіркою?
Ваш валідатор може перевіряти відомі некоректні шаблони, крім математичного алгоритму. Наприклад, CPF з усіма однаковими цифрами (000.000.000-00, 111.111.111-11 тощо) математично коректні, але більшість бразильських систем їх блокує, оскільки вони є відомими тестовими значеннями. Добра логіка перевірки включає як алгоритм контрольної цифри, так і відхилення на основі шаблонів.

## Юридичні та етичні міркування

При використанні **генератора CPF** дотримуйтесь цих важливих рекомендацій:

1. **Тільки для тестування:** Згенеровані CPF призначені виключно для середовищ розробки та тестування
2. **Чітке маркування:** Позначайте всі тестові дані, що містять згенеровані CPF, щоб запобігти плутанині з реальними даними
3. **Дотримання конфіденційності:** Розумійте закони про захист даних (як LGPD в Бразилії) навіть при роботі з фіктивними ідентифікаторами
4. **Виробничі системи:** Завжди використовуйте реальні, перевірені CPF з авторизованих джерел у робочих середовищах
5. **Заходи безпеки:** Впроваджуйте належний захист як для реальних, так і для згенерованих CPF у ваших системах
6. **Без імітації:** Ніколи не використовуйте згенеровані номери для імітації реальних осіб або вчинення шахрайства

## Використання Згенерованих CPF у Вашому Тестовому Наборі

Для розробників, які працюють над бразильськими додатками, мати надійні тестові дані є принциповим. Цей генератор CPF надає математично коректні номери, які проходять перевірку валідації, при цьому зберігаючи повну відокремленість тестування від реальних даних користувачів.

Пам'ятайте ці ключові моменти при інтеграції згенерованих CPF у ваш робочий процес:

- **Чітко позначайте тестові дані** у схемах бази даних та документації
- **Впроваджуйте перевірку патернів** для відомих недійсних CPF (всі цифри однакові) у вашій валідації
- **Використовуйте згенеровані CPF лише у непродакшн середовищах** — staging, розробка та CI/CD конвеєри
- **Посилайтеся на офіційні специфікації валідації** від [Receita Federal](https://www.gov.br/receitafederal/pt-br/assuntos/orientacao-tributaria/cadastros/cpf) при побудові власної логіки валідації

Натисніть кнопку генерації вище, щоб створити дійсні номери CPF для ваших потреб тестування.

## Посилання та офіційна документація

Для авторитетної інформації про стандарти CPF та бразильські правила роботи з даними:

1. **Receita Federal do Brasil.** "CPF - Cadastro de Pessoas Físicas." Офіційна документація про вимоги та перевірку CPF. [https://www.gov.br/receitafederal/pt-br/assuntos/orientacao-tributaria/cadastros/cpf](https://www.gov.br/receitafederal/pt-br/assuntos/orientacao-tributaria/cadastros/cpf)

2. **Serpro (Федеральна служба обробки даних).** "Validador de CPF." Урядова служба перевірки CPF з тестовим середовищем. [https://www.serpro.gov.br/links-fixos-superiores/validador-cpf](https://www.serpro.gov.br/links-fixos-superiores/validador-cpf)

3. **Lei Geral de Proteção de Dados (LGPD).** "Загальний закон про захист даних Бразилії." Правова база, що регулює поводження з особистими даними в Бразилії. [https://www.gov.br/cidadania/pt-br/acesso-a-informacao/lgpd](https://www.gov.br/cidadania/pt-br/acesso-a-informacao/lgpd)

4. **Lei nº 4.862/1965.** "Змінює законодавство про прибутковий податок." Первинне законодавство про створення системи CPF. [https://www.planalto.gov.br/ccivil_03/leis/l4862.htm](https://www.planalto.gov.br/ccivil_03/leis/l4862.htm)

5. **Міністерство фінансів.** "Історія CPF." Історичний контекст та еволюція системи CPF. [https://www.gov.br/fazenda/pt-br/assuntos/receita-federal](https://www.gov.br/fazenda/pt-br/assuntos/receita-federal)

---

**Мета-заголовок:** CPF Генератор - Створення дійсних бразильських податкових ідентифікаторів для тестування
**Мета-опис:** Безкоштовний генератор CPF створює дійсні бразильські податкові ідентифікаційні номери, які проходять алгоритми перевірки. Ідеально підходить для тестування форм, API та баз даних без використання реальних особистих даних.