테스트를 위한 유효한 CPF 번호 생성기 도구
테스트 목적으로 유효하고 무작위의 CPF( Cadastro de Pessoas Físicas) 번호를 생성합니다. 이 도구는 실제 개인 정보를 사용하지 않고 공식 브라질 형식 및 검증 규칙을 준수하는 CPF를 생성합니다.
CPF 생성
문서
CPF 생성기
소개
CPF(Cadastro de Pessoas Físicas)는 세금 목적을 위해 브라질 시민 및 거주자에게 할당된 고유 식별자입니다. 이 생성기는 테스트 목적으로 유효하고 무작위의 CPF 번호를 생성합니다. 생성된 CPF는 실제 개인과 연결되지 않으며 테스트 환경에서만 사용해야 합니다.
CPF 구조
CPF는 11자리 숫자로 구성됩니다:
- 처음 9자리는 기본 숫자입니다.
- 마지막 2자리는 체크 숫자입니다.
형식은 일반적으로 다음과 같이 표현됩니다: XXX.XXX.XXX-XX
CPF 유효성 검사 알고리즘
CPF 유효성 검사 알고리즘은 번호의 무결성을 보장합니다. 작동 방식은 다음과 같습니다:
- 처음 9자리 숫자에 가중치(10에서 2까지)를 곱합니다.
- 결과를 합산합니다.
- 합계를 11로 나눈 나머지를 계산합니다.
- 나머지가 2보다 작으면 첫 번째 체크 숫자는 0입니다. 그렇지 않으면 11에서 나머지를 뺍니다.
- 첫 번째 체크 숫자를 포함한 처음 10자리 숫자에 대해 동일한 과정을 반복합니다 (가중치 11에서 2까지).
- 첫 번째와 동일한 규칙으로 두 번째 체크 숫자를 계산합니다.
이 생성기 사용 방법
- "CPF 생성" 버튼을 클릭합니다.
- 유효하고 무작위의 CPF가 표시됩니다.
- 생성된 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
계산
생성기는 다음 단계를 수행합니다:
- 9개의 무작위 숫자 생성
- 위에서 설명한 알고리즘을 사용하여 첫 번째 체크 숫자 계산
- 두 번째 체크 숫자 계산
- 모든 숫자를 결합하여 전체 CPF 형성
예시
생성된 CPF의 몇 가지 예시는 다음과 같습니다:
- 123.456.789-09
- 987.654.321-00
- 111.222.333-96
사용 사례
CPF 생성기는 다양한 소프트웨어 개발 및 테스트 시나리오에서 유용합니다:
- 데이터베이스 테스트: 테스트 데이터베이스에 유효한 CPF 번호 채우기
- 양식 유효성 검사: 브라질 사용자 등록 양식의 입력 유효성 테스트
- API 테스트: 유효한 브라질 식별이 필요한 API 요청에 생성된 CPF 사용
- 성능 테스트: 부하 테스트를 위한 고유하고 유효한 CPF의 대량 세트 생성
- UI/UX 테스트: 사용자 인터페이스에서 CPF 번호의 올바른 형식 및 표시 보장
대안
CPF는 브라질의 주요 개인 식별자이지만 특정 맥락에서 사용할 수 있는 다른 식별자도 있습니다:
- RG(Registro Geral): 주에서 발급한 신원 문서
- CNPJ(Cadastro Nacional da Pessoa Jurídica): 기업 및 법인에 사용
- PIS/PASEP: 고용 관련 목적으로 사용
역사
CPF는 브라질의 세금 시스템 현대화를 위한 광범위한 노력의 일환으로 1965년에 도입되었습니다. 처음에는 주로 소득세 목적으로 사용되었지만 시간이 지남에 따라 브라질의 관료제 및 상업의 여러 다른 분야로 사용이 확대되었습니다.
CPF 역사에서의 주요 이정표:
- 1965: 개인을 위한 CPF 도입
- 1972: 모든 세금 납부 개인에게 CPF 의무화
- 1990년대: 상업 및 금융 거래에서 CPF 사용이 더욱 널리 퍼짐
- 2000년대: 디지털 시스템이 CPF를 브라질 일상 생활에 더욱 통합
오늘날 CPF는 브라질 시민 및 거주자가 정부 서비스, 금융 기관 및 많은 상업 거래와 상호 작용하는 데 필수적인 부분입니다.
코드 예시
다양한 프로그래밍 언어에서 CPF를 생성하고 유효성을 검사하는 코드 스니펫은 다음과 같습니다:
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
이 예시는 Python, JavaScript 및 Java에서 CPF를 생성하고 유효성을 검사하는 방법을 보여줍니다. 이러한 기능을 특정 요구 사항에 맞게 조정하거나 CPF 처리가 필요한 더 큰 시스템에 통합할 수 있습니다.
법적 및 윤리적 고려사항
생성된 CPF를 사용할 때 다음 사항을 유의해야 합니다:
- 생성된 CPF는 테스트 목적으로만 사용되며 실제 개인을 사칭하거나 사기 활동에 사용해서는 안 됩니다.
- 생성된 CPF가 포함된 테스트 데이터를 명확하게 라벨링하여 실제 개인 데이터와 혼동되지 않도록 합니다.
- 가짜 개인 식별자를 처리할 때 관할권의 데이터 보호 법률 및 규정을 인식합니다.
- 프로덕션 환경에서는 항상 사용자 또는 승인된 출처에서 제공된 실제, 검증된 CPF를 사용합니다.
- 시스템에서 실제 및 생성된 CPF를 보호하기 위해 적절한 보안 조치를 구현합니다.
참고 문헌
- 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."
피드백
피드백 토스트를 클릭하여 이 도구에 대한 피드백을 시작하세요.
관련 도구
귀하의 작업 흐름에 유용할 수 있는 더 많은 도구를 발견하세요.