CNPJ 介绍
是什么:巴西法人实体国家注册号,相当于中国的企业统一社会信用代码。
格式:14位数字,格式 XX.XXX.XXX/XXXX-XX
结构:
- 前8位:基础注册号
- 接下来4位:分支机构号(0001 = 总部)
- 最后2位:验证码
Python 示例
python
import random
def validate_cnpj(cnpj):
"""验证 CNPJ 格式和验证码"""
cnpj = ''.join(filter(str.isdigit, cnpj))
if len(cnpj) != 14 or len(set(cnpj)) == 1:
return False
# 计算第一个验证码
weights1 = [5,4,3,2,9,8,7,6,5,4,3,2]
total = sum(int(cnpj[i]) * weights1[i] for i in range(12))
digit1 = 11 - (total % 11)
digit1 = 0 if digit1 > 9 else digit1
# 计算第二个验证码
weights2 = [6,5,4,3,2,9,8,7,6,5,4,3,2]
total = sum(int(cnpj[i]) * weights2[i] for i in range(13))
digit2 = 11 - (total % 11)
digit2 = 0 if digit2 > 9 else digit2
return int(cnpj[12]) == digit1 and int(cnpj[13]) == digit2
def generate_cnpj():
"""生成有效的 CNPJ 号码"""
base = [random.randint(0, 9) for _ in range(8)] + [0, 0, 0, 1]
# 计算验证码(简化版)
weights1 = [5,4,3,2,9,8,7,6,5,4,3,2]
total = sum(base[i] * weights1[i] for i in range(12))
digit1 = 11 - (total % 11)
base.append(0 if digit1 > 9 else digit1)
weights2 = [6,5,4,3,2,9,8,7,6,5,4,3,2]
total = sum(base[i] * weights2[i] for i in range(13))
digit2 = 11 - (total % 11)
base.append(0 if digit2 > 9 else digit2)
cnpj = ''.join(map(str, base))
return f"{cnpj[:2]}.{cnpj[2:5]}.{cnpj[5:8]}/{cnpj[8:12]}-{cnpj[12:]}"
# 使用示例
cnpj = generate_cnpj()
print(f"生成的 CNPJ: {cnpj}")
print(f"验证结果: {validate_cnpj(cnpj)}")
输出示例:
text
生成的 CNPJ: 12.345.678/0001-95 验证结果: True
主要用途
- 企业身份识别
- 税务登记
- 商业合同
- 银行开户
一句话总结:CNPJ 是巴西企业的官方识别码,包含基础注册号、分支机构号和验证码,用于所有商业活动。