Algoritmo do CNPJ - O que está por trás do gerador de CNPJ
       ==========================================================

O CNPJ é composto por quatorze algarismos, divididos em três blocos:

- o primeiro, que representa o número da inscrição propriamente dito;
- o segundo,  localizado após  a barra, que  representa um  código único
  para a matrix ou filial; 
- o  terceiro,  representados pelos  dois  últimos  valores chamados  de
  dígitos verificadores (DV). 

Os dígitos verificadores (DV) são criados a partir dos doze primeiros. O
cálculo é feito em duas etapas utilizando o módulo de divisão 11. 

Para  exemplificar o  processo e  tornar mais  fácil a  explicação vamos
calcular os  dígitos verificadores de  um CNPJ hipotético,  por exemplo,
11.444.777/0001-XX. 

Calculando o Primeiro Dígito Verificador

O primeiro dígito é calculado utilizando-se o seguinte algoritmo.

1) Distribua  os 12  primeiros dígitos em  um quadro colocando  os pesos
   5,4,3,2,9,8,7,6,5,4,3,2 abaixo  da esquerda para  a direita, conforme
   representação abaixo:

1 	1 	4 	4 	4 	7 	7 	7 	0 	0 	0 	1
5 	4 	3 	2 	9 	8 	7 	6 	5 	4 	3 	2

2) Multiplique os valores de cada coluna:

1 	1 	4 	4 	4 	7 	7 	7 	0 	0 	0 	1
5 	4 	3 	2 	9 	8 	7 	6 	5 	4 	3 	2
5 	4 	12 	8 	36 	56 	49 	42 	0 	0 	0 	2

3) Calcule o somatório dos resultados (5+4+...+0+2) = 214

4) O resultado obtido (214) será divido por 11. Considere como quociente
   apenas  o valor  inteiro, o  resto da  divisão será  responsável pelo
   cálculo do primeiro dígito verificador. 

Vamos acompanhar: 214 dividido por 11 obtemos 19 como quociente e 5 como
resto da  divisão. Caso  o resto da  divisão seja  menor que 2,  o nosso
primeiro dígito verificador se torna 0 (zero), caso contrário subtrai-se
o  valor obtido  de  11, que  é  nosso caso.  Sendo  assim nosso  dígito
verificador é 11-5, ou seja, 6  (seis). Já temos portanto parte do CNPJ,
confira: 11.444.777/0001-6X.

Calculando o Segundo Dígito Verificador

1)  Para  o cálculo  do  segundo dígito  será  usado  o primeiro  dígito
    verificador  já  calculado.   Montaremos  uma  tabela  semelhante  a
    anterior  só que  desta vez  usaremos  na segunda  linha os  valores
    6,5,4,3,2,9,8,7,6,5,4,3,2  já  que   estamos  incorporando  mais  um
    algarismo para esse cálculo. Veja:

1 	1 	4 	4 	4 	7 	7 	7 	0 	0 	0 	1 	6
6 	5 	4 	3 	2 	9 	8 	7 	6 	5 	4 	3 	2

2)  Na próxima etapa  faremos como  na situação  do cálculo  do primeiro
    dígito verificador, multiplicaremos os valores de cada coluna e
    efetuaremos o somatório dos resultados obtidos: (6+5+...+3+12) = 221.  

1 	1 	4 	4 	4 	7 	7 	7 	0 	0 	0 	1 	6
6 	5 	4 	3 	2 	9 	8 	7 	6 	5 	4 	3 	2
6 	5 	16 	12 	8 	63 	56 	49 	0 	0 	0 	3 	12

3) Realizamos  novamente o  cálculo do módulo  11. Dividimos o  total do
   somatório por 11 e consideramos o resto da divisão.

Vamos acompanhar:  230 dividido  por 11 obtemos  20 como quociente  e 10
como resto da divisão.

4) Caso o valor  do resto da divisão seja menor que  2, esse valor passa
   automaticamente a ser zero, caso  contrário (como no nosso exemplo) é
   necessário  subtrair o  valor obtido  de 11  para se  obter  o dígito
   verificador,  como realizado  no  cálculo do  primeiro dígito.  Logo,
   11-10 = 1 é o nosso segundo dígito verificador. 

Chegamos   ao  final  dos   cálculos  e   descobrimos  que   os  dígitos
verificadores do nosso CNPJ hipotético são  os números 6 e 1, portanto o
CNPJ ficaria assim: 11.444.777/0001-61.

O  gerador  de cnpj  apresentado  neste  site  funciona com  base  neste
algoritmo. A  rotina de  gerar CNPJ 's  válidos, inicialmente  sorteia 9
números. Calcula-se o  1o dígito verificador e integra-se  o mesmo aos 9
números  iniciais.   Prossegue-se  com  o  cálculo   do  segundo  dígito
verificador como ensinado.  Ao final, o criador de  CNPJ emite um número
de CNPJ válido.

=========================================================================

FONTE: http://www.geradorcnpj.com/algoritmo_do_cnpj.htm (em Seg Jun 17 15:06:49 BRT 2013)