El CNPJ (Registro Nacional de Personas Jurídicas) es un número único formado por catorce dígitos que identifica a una persona jurídica ante la Secretaría de Ingresos Federales de Brasil (órgano del Ministerio de Hacienda), necesario para que la persona jurídica pueda celebrar contratos y demandar o ser demandada.
El CNPJ se valida del mismo modo que el CPF, con la única diferencia de los vectores por defecto. Son los dos últimos dígitos los que validan los 12 dígitos anteriores.
Para el algoritmo siguiente, utilizaremos el siguiente CNPJ como ejemplo: 44.038.188/0001-32.
Algoritmo para la generación de CNPJ:
- Cálculo del primer dígito de control:
Tomemos un vector [latex] a E R^12 [/latex] cuyas componentes son las 12 primeras cifras del número CNPJ. Para el CNPJ que se utilizará en este ejemplo (44.038.188/0001-32) tendremos el siguiente vector:
[latex] a = (4, 4, 0, 3, 8, 1, 8, 8, 0, 0, 0, 1) [/latex]
Determinamos el producto escalar de este vector con el vector estándar:
[latex] b = (5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2) [/latex]
OBS:
El vector por defecto, como su nombre indica, será siempre el mismo cuando se calcule el dígito de control.
[latex] a.b = a = (4, 4, 0, 3, 8, 1, 8, 8, 0, 0, 0, 1) . b = (5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2) = 20 + 16 + 0 + 6 + 72 + 8 + 56 + 48 + 0 + 0 + 0 + 2 = 228 [/latex]
Ahora tomamos el resto de la división del producto escalar entre 11, es decir, 228 dividido entre 11 nos dará un resto entero igual a 8. El primer dígito de control se obtiene restando [latex] 11 – resto[/latex] y el resultado es el número 3.
- Cálculo del segundo dígito de control:
Tomemos un vector [latex] c E R^13 [/latex] cuyos componentes son los 12 primeros dígitos que componen el número CNPJ más el primer dígito de control 3, calculado anteriormente:
[latex] c = (4, 4, 0, 3, 8, 1, 8, 8, 0, 0, 0, 1, 3) [/latex]
Determinamos el producto escalar de este vector con el vector estándar:
[latex] d = (6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2) [/latex]
OBS:
En el segundo vector estándar, el número 6 debe ser añadido al primer componente del vector.
[latex] c.d = (4, 4, 0, 3, 8, 1, 8, 8, 0, 0, 0, 1, 3) . (6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2) = 24 + 20 + 0 + 9 + 16 + 9 + 64 + 56 + 0 + 0 + 0 + 3 + 6 = 207 [/latex]
Ahora tomamos el resto de la división del producto escalar entre 11, es decir, 207 dividido entre 11 nos dará un resto entero igual a 9. El segundo dígito de control se obtiene restando [latex] 11 – resto[/latex] y el resultado es el número 2.
Completando nuestro CNPJ 44.038.188/0001-xx con los dos dígitos de control calculados obtendremos 44.038.188/0001-32.