随机CPF

CPF 介绍

是什么:巴西个人纳税人注册号,相当于中国的身份证号码。

格式:11位数字,格式 XXX.XXX.XXX-XX

结构


Python 示例

python

import random

def validate_cpf(cpf):
    """验证 CPF 格式和验证码"""
    cpf = ''.join(filter(str.isdigit, cpf))

    if len(cpf) != 11 or len(set(cpf)) == 1:
        return False

    # 计算第一个验证码
    total = sum(int(cpf[i]) * (10 - i) for i in range(9))
    digit1 = 11 - (total % 11)
    digit1 = 0 if digit1 > 9 else digit1

    # 计算第二个验证码
    total = sum(int(cpf[i]) * (11 - i) for i in range(10))
    digit2 = 11 - (total % 11)
    digit2 = 0 if digit2 > 9 else digit2

    return int(cpf[9]) == digit1 and int(cpf[10]) == digit2

def generate_cpf():
    """生成有效的 CPF 号码"""
    base = [random.randint(0, 9) for _ in range(9)]

    # 计算第一个验证码
    total = sum(base[i] * (10 - i) for i in range(9))
    digit1 = 11 - (total % 11)
    base.append(0 if digit1 > 9 else digit1)

    # 计算第二个验证码
    total = sum(base[i] * (11 - i) for i in range(10))
    digit2 = 11 - (total % 11)
    base.append(0 if digit2 > 9 else digit2)

    cpf = ''.join(map(str, base))
    return f"{cpf[:3]}.{cpf[3:6]}.{cpf[6:9]}-{cpf[9:]}"

# 使用示例
cpf = generate_cpf()
print(f"生成的 CPF: {cpf}")
print(f"验证结果: {validate_cpf(cpf)}")

输出示例

text

生成的 CPF: 123.456.789-09
验证结果: True

主要用途

验证规则

一句话总结:CPF 是巴西个人的官方税务识别码,包含基础号码和验证码,用于所有个人金融和行政事务。

CPF vs CNPJ:核心区别

维度CPFCNPJ
适用对象个人(自然人)企业/组织(法人)
号码长度11位数字14位数字
格式XXX.XXX.XXX-XXXX.XXX.XXX/XXXX-XX
验证码位数2位2位
基础号码前9位前12位(8位注册号 + 4位分支机构)

关键区别说明

1. 用途范围

2. 结构差异

3. 验证规则

一句话总结:CPF 用于个人,CNPJ 用于企业;前者11位标识自然人,后者14位标识法人实体,两者在巴西商业生态中互补共存。