Gerador de CPF e CNPJ – Códigos-fonte em C, PHP e JavaScript



Quer saber como funcionam os geradores de CPF e CNPJ? Aprenda a criar o seu, vejam exemplos programados em C, JavaScript e PHP:

Gerador
de CPF e CNPJ Válidos
CPFCNPJ

Os códigos-fontes desta página foram encontrados na Internet, revisados e testados, todos estão 100% funcionais. Os créditos dos aplicativos são de seus respectivos autores.

O propósitos desta apresentação é meramente educativo, sendo de sua inteira responsabilidade o que pretende fazer com essas informações 😉

Exemplo 1:  Gerador de CPF, CNPJ e Título eleitoral em C
(autor desconhecido) 

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<conio.h>
main()
{
 int opcao,erro=0;
 char resp;
 inicio:
 fflush(stdin);
 system("cls");
 printf("*==================================================================*n");
 printf("|____ GERADOR DE NUMEROS DE CPF, CNPJ E TITULO ELEITORAL V. 1.0 ___|n");
 printf("| |n");
 printf("| Autor: Thiago C. Serrilho |n");
 printf("| E-mail: [email protected] |n");
 printf("| 3o. Semestre - Licenciatura em Computacao |n");
 printf("| Disciplina: Linguagem de Programacao I |n");
 printf("| Prof. Carlos Acacio |n");
 printf("*==================================================================*nn");
 printf("*-----------------------------*n");
 printf("| Menu de opcoes |n");
 printf("*-----------------------------*n");
 printf("| 1 - Gerar numeros de CPF |n");
 printf("| 2 - Gerar Numeros de CNPJ |n");
 printf("| 3 - Gerar Numeros de TE |n");
 printf("| 4 - Finalizar programa |n");
 printf("*-----------------------------*n");
 erro=0;
 do
 {
 erro++;
 if(erro>1)
 {
 printf("Erro: Opcao invalida!n");
 erro=1;
 }
 printf("Informe a sua opcao: ");
 scanf("%d",&opcao); fflush(stdin);
 }while(opcao>4 || opcao<1);
 switch(opcao)
 {
 case 1:
 {
 system("cls");
 int numero[9],soma1,soma2,i,erro,cpf,quant;
 int parte1,parte2,parte3,dig1;
 int parte5,parte6,parte7,dig2;
 printf("*==================================================================*n");
 printf("|________________ GERADOR DE NUMEROS DE CPF V. 1.0 ________________|n");
 printf("| |n");
 printf("| Autor: Thiago C. Serrilho |n");
 printf("| E-mail: [email protected] |n");
 printf("| 3o. Semestre - Licenciatura em Computacao |n");
 printf("| Disciplina: Linguagem de Programacao I |n");
 printf("| Prof. Carlos Acacio |n");
 printf("*==================================================================*nn");
 printf("Deseja gerar quantos numeros de CPF: ");
 scanf("%d",&quant);
 printf("*==================================================================*n");
 //*==========================================*
 //| Geração dos numeros do CPF |
 //*==========================================*
 for(cpf=1;cpf<=quant;cpf++)
 {
 for(i=1;i<= 9;i++)
 {
 erro=1;
 do
 {
 if(erro>1)
 {
 printf("Numero invalido.n");
 erro=1;
 }
 numero[i]=rand()%9;
 erro++;
 }while(numero[i]>9 || numero[i]<0);
 }
 //*==========================================*
 //| Primeiro digito veridicador |
 //*==========================================*
 soma1=((numero[1]*10)+
 (numero[2]*9)+
 (numero[3]*8)+
 (numero[4]*7)+
 (numero[5]*6)+
 (numero[6]*5)+
 (numero[7]*4)+
 (numero[8]*3)+
 (numero[9]*2));
 parte1=int(soma1 / 11);
 parte2=(parte1 * 11);
 parte3=(soma1 - parte2);
 dig1=(11 - parte3);
 if(dig1>9)dig1=0;
 //*==========================================*
 //| Segundo digito veridicador |
 //*==========================================*
 soma2=((numero[1]*11)+
 (numero[2]*10)+
 (numero[3]*9)+
 (numero[4]*8)+
 (numero[5]*7)+
 (numero[6]*6)+
 (numero[7]*5)+
 (numero[8]*4)+
 (numero[9]*3)+
 (dig1*2));
 parte5=int(soma2 / 11);
 parte6=(parte5 * 11);
 parte7=(soma2 - parte6);
 dig2=(11 - parte7);
 if(dig2>9)dig2=0;
 //*==========================================*
 //| Impressao do numero completo |
 //*==========================================*
 for(i=1;i<=9;i++)
 {
 printf("%d",numero[i]);
 if(i-1==2) printf(".");
 if(i-1==5) printf(".");
 }
 printf("-%d%dn",dig1,dig2); //dois últimos digitos
 printf("*==================================================================*n");
 }
 printf("Pressione "enter" para continuar...");
 getchar();
 getchar();
 break;
 }
 case 2:
 {
 system("cls");
 int numero[12],soma1,soma2,i,erro,cnpj,quant;
 int parte1,parte2,parte3,dig1;
 int parte5,parte6,parte7,dig2;
 printf("*==================================================================*n");
 printf("|________________ GERADOR DE NUMEROS DE CNPJ V. 1.0 _______________|n");
 printf("| |n");
 printf("| Autor: Thiago C. Serrilho |n");
 printf("| E-mail: [email protected] |n");
 printf("| 3o. Semestre - Licenciatura em Computacao |n");
 printf("| Disciplina: Linguagem de Programacao I |n");
 printf("| Prof. Carlos Acacio |n");
 printf("*==================================================================*nn");
 printf("Deseja gerar quantos numeros de CNPJ: ");
 scanf("%d",&quant);
 printf("*==================================================================*n");
 //*==========================================*
 //| Geração dos numeros do CNPJ |
 //*==========================================*
 for(cnpj=1;cnpj<=quant;cnpj++)
 {
 for(i=1;i<=8;i++)
 {
 numero[i]=rand()%9;
 }
 numero[9]=0;
 numero[10]=0;
 numero[11]=0;
 numero[12]=rand()%9;
 //*==========================================*
 //| Primeiro digito veridicador |
 //*==========================================*
 soma1=((numero[1]*5)+
 (numero[2]*4)+
 (numero[3]*3)+
 (numero[4]*2)+
 (numero[5]*9)+
 (numero[6]*8)+
 (numero[7]*7)+
 (numero[8]*6)+
 (numero[9]*5)+
 (numero[10]*4)+
 (numero[11]*3)+
 (numero[12]*2));
 parte1=int(soma1 / 11);
 parte2=(parte1 * 11);
 parte3=(soma1 - parte2);
 dig1=(11 - parte3);
 if(dig1>9)dig1=0;
 //*==========================================*
 //| Segundo digito veridicador |
 //*==========================================*
 soma2=((numero[1]*6)+
 (numero[2]*5)+
 (numero[3]*4)+
 (numero[4]*3)+
 (numero[5]*2)+
 (numero[6]*9)+
 (numero[7]*8)+
 (numero[8]*7)+
 (numero[9]*6)+
 (numero[10]*5)+
 (numero[11]*4)+
 (numero[12]*3)+
 (dig1*2));
 parte5=int(soma2 / 11);
 parte6=(parte5 * 11);
 parte7=(soma2 - parte6);
 dig2=(11 - parte7);
 if(dig2>9)dig2=0;
 //*==========================================*
 //| Impressao do numero completo |
 //*==========================================*
 for(i=1;i<=12;i++)
 {
 printf("%d",numero[i]);//numeros do CNPJ
 if(i==2) printf(".");//imprime um ponto depois da 2ª casa
 if(i==5) printf(".");//imprime um ponto depois da 5ª casa
 if(i==8) printf("/");//imprime uma barra depois da 8ª casa
 }
 printf("-%d%dn",dig1,dig2); // dois últimos digitos
 printf("*==================================================================*n");
 }
 printf("Pressione "enter" para continuar...");
 getchar();
 getchar();
 break;
 }
 case 3:
 {
 system("cls");
 int numero[10],soma1,soma2,i,te,quant;
 int parte1,parte2,parte3,parte4,dig1,dig2;
 printf("*==================================================================*n");
 printf("|__________ GERADOR DE NUMEROS DE TITULO ELEITORAL V. 1.0 _________|n");
 printf("| |n");
 printf("| Autor: Thiago C. Serrilho |n");
 printf("| E-mail: [email protected] |n");
 printf("| 3o. Semestre - Licenciatura em Computacao |n");
 printf("| Disciplina: Linguagem de Programacao I |n");
 printf("| Prof. Carlos Acacio |n");
 printf("*==================================================================*nn");
 printf("Deseja gerar quantos numeros de TE: ");
 scanf("%d",&quant);
 printf("============================================n");
 //*==========================================*
 //| Geração dos numeros do TE |
 //*==========================================*
 for(te=1;te<=quant;te++)
 {
 for(i=1;i<=8;i++)
 {
 numero[i]=rand()%9;
 numero[9]=rand()%2;
 numero[10]=rand()%8;
 }
 //*==========================================*
 //| Primeiro digito veridicador |
 //*==========================================*
 soma1=((numero[1]*2)+
 (numero[2]*3)+
 (numero[3]*4)+
 (numero[4]*5)+
 (numero[5]*6)+
 (numero[6]*7)+
 (numero[7]*8)+
 (numero[8]*9));
 parte1=int(soma1 / 11);
 parte2=(parte1 * 11);
 dig1=(soma1 - parte2);
 if(dig1>9)dig1=0;
 //*=========================================*
 //| Segundo digito verificador |
 //*=========================================*
 soma2=((numero[9]*7)+
 (numero[10]*8)+
 (dig1*9));
 parte3=int(soma2 / 11);
 parte4=(parte3 * 11);
 dig2=(soma2 - parte4);
 if(dig2>9)dig2=0;
 //*==========================================*
 //| Impressao do numero completo |
 //*==========================================*
 for(i=1;i<=10;i++)
 {
 printf("%d",numero[i]);
 if(i==4) printf(" "); //imprime um espaço apos a 4ª casa
 if(i==8) printf(" "); //imprime um espaço apos a 8ª casa
 }
 printf("%d%dn",dig1,dig2); //dois últimos digitos
 printf("============================================n");
 }
 printf("Pressione "enter" para continuar...");
 getchar();
 getchar();
 break;
 }
 case 4:
 {
 printf("Deseja continuar no programa (s/n)? ");
 scanf("%s",&resp);
 if((resp=='n') || (resp=='N')) goto fim;
 else goto inicio;
 }
 }
 goto inicio;
 fim:;
}

Exemplo 2: Gerador de CPF e CNPJ em PHP
fonte e exemplo:  http://www.dcon.com.br/jd.comment/cpf_cnpf.php

<?php
/*
* Created on 16/Dez/2005
*
* funções para geração automática
* e randômica de CPFs e CNPJs
* créditos: [email protected]
*/
 
function mod($dividendo,$divisor)
{
return round($dividendo - (floor($dividendo/$divisor)*$divisor));
}
function cpf($compontos)
{
$n1 = rand(0,9);
$n2 = rand(0,9);
$n3 = rand(0,9);
$n4 = rand(0,9);
$n5 = rand(0,9);
$n6 = rand(0,9);
$n7 = rand(0,9);
$n8 = rand(0,9);
$n9 = rand(0,9);
$d1 = $n9*2+$n8*3+$n7*4+$n6*5+$n5*6+$n4*7+$n3*8+$n2*9+$n1*10;
$d1 = 11 - ( mod($d1,11) );
if ( $d1 >= 10 )
{ $d1 = 0 ;
}
$d2 = $d1*2+$n9*3+$n8*4+$n7*5+$n6*6+$n5*7+$n4*8+$n3*9+$n2*10+$n1*11;
$d2 = 11 - ( mod($d2,11) );
if ($d2>=10) { $d2 = 0 ;}
$retorno = '';
if ($compontos==1) {$retorno = ''.$n1.$n2.$n3.".".$n4.$n5.$n6.".".$n7.$n8.$n9."-".$d1.$d2;}
else {$retorno = ''.$n1.$n2.$n3.$n4.$n5.$n6.$n7.$n8.$n9.$d1.$d2;}
return $retorno;
}
 
function cnpj($compontos)
{
$n1 = rand(0,9);
$n2 = rand(0,9);
$n3 = rand(0,9);
$n4 = rand(0,9);
$n5 = rand(0,9);
$n6 = rand(0,9);
$n7 = rand(0,9);
$n8 = rand(0,9);
$n9 = 0;
$n10= 0;
$n11= 0;
$n12= 1;
$d1 = $n12*2+$n11*3+$n10*4+$n9*5+$n8*6+$n7*7+$n6*8+$n5*9+$n4*2+$n3*3+$n2*4+$n1*5;
$d1 = 11 - ( mod($d1,11) );
if ( $d1 >= 10 )
{ $d1 = 0 ;
}
$d2 = $d1*2+$n12*3+$n11*4+$n10*5+$n9*6+$n8*7+$n7*8+$n6*9+$n5*2+$n4*3+$n3*4+$n2*5+$n1*6;
$d2 = 11 - ( mod($d2,11) );
if ($d2>=10) { $d2 = 0 ;}
$retorno = '';
if ($compontos==1) {$retorno = ''.$n1.$n2.".".$n3.$n4.$n5.".".$n6.$n7.$n8."/".$n9.$n10.$n11.$n12."-".$d1.$d2;}
else {$retorno = ''.$n1.$n2.$n3.$n4.$n5.$n6.$n7.$n8.$n9.$n10.$n11.$n12.$d1.$d2;}
return $retorno;
}
echo '<h2>Gerador de CPF e CNPJ em PHP</h2><b>';
echo 'CPF: '.cpf(1).'<br>';
echo 'CNPJ: '.cnpj(1).'<br>';
echo 'CPF (sem pontuação): '.cpf(0).'<br>';
echo 'CNPJ (sem pontuação): '.cnpj(0).'<br>';
echo '</b><br><form><input type=button value="Gerar novos dados" onClick="window.location.reload()"></form>';
?>

Exemplo 3: Gerador de CPF e CNPJ em JavaScript
(Autor: Marcos Guiga) 

 

<html>
<head>
<title>Gerador de CPF e CNPJ Válidos</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="JavaScript">
 
// ****************************************
// Script Gerador de CPF e CNPJ Válidos
// Autor: Marcos Guiga
// Site : Worldigital.co.cc
// Email: [email protected]
// Data: 19/12/2010
// ****************************************
// Função para gerar números randômicos
function gera_random(n)
{
 var ranNum = Math.round(Math.random()*n);
 return ranNum;
}
 
// Função para retornar o resto da divisao entre números (mod)
function mod(dividendo,divisor)
{
 return Math.round(dividendo - (Math.floor(dividendo/divisor)*divisor));
}
 
// Função que gera números de CPF válidos
function cpf()
{
 var n = 9;
 var n1 = gera_random(n);
 var n2 = gera_random(n);
 var n3 = gera_random(n);
 var n4 = gera_random(n);
 var n5 = gera_random(n);
 var n6 = gera_random(n);
 var n7 = gera_random(n);
 var n8 = gera_random(n);
 var n9 = gera_random(n);
 var d1 = n9*2+n8*3+n7*4+n6*5+n5*6+n4*7+n3*8+n2*9+n1*10;
 d1 = 11 - ( mod(d1,11) );
 if (d1>=10) d1 = 0;
 var d2 = d1*2+n9*3+n8*4+n7*5+n6*6+n5*7+n4*8+n3*9+n2*10+n1*11;
 d2 = 11 - ( mod(d2,11) );
 if (d2>=10) d2 = 0;
 return ''+n1+n2+n3+'.'+n4+n5+n6+'.'+n7+n8+n9+'-'+d1+d2;
}
 
// Função que gera números de CNPJ válidos
function cnpj()
{
 var n = 9;
 var n1 = gera_random(n);
 var n2 = gera_random(n);
 var n3 = gera_random(n);
 var n4 = gera_random(n);
 var n5 = gera_random(n);
 var n6 = gera_random(n);
 var n7 = gera_random(n);
 var n8 = gera_random(n);
 var n9 = 0;//gera_random(n);
 var n10 = 0;//gera_random(n);
 var n11 = 0;//gera_random(n);
 var n12 = 1;//gera_random(n);
 var d1 = n12*2+n11*3+n10*4+n9*5+n8*6+n7*7+n6*8+n5*9+n4*2+n3*3+n2*4+n1*5;
 d1 = 11 - ( mod(d1,11) );
 if (d1>=10) d1 = 0;
 var d2 = d1*2+n12*3+n11*4+n10*5+n9*6+n8*7+n7*8+n6*9+n5*2+n4*3+n3*4+n2*5+n1*6;
 d2 = 11 - ( mod(d2,11) );
 if (d2>=10) d2 = 0;
 return ''+n1+n2+'.'+n3+n4+n5+'.'+n6+n7+n8+'/'+n9+n10+n11+n12+'-'+d1+d2;
}
 
// Função para escolher qual função chamar de acordo com a chamada
function faz()
{
 if (document.form1.tipo[0].checked)
 document.form1.numero.value = cpf();
 else
 document.form1.numero.value = cnpj();
}
 
// FIM
</script>
</head>
 
<body>
<form name="form1" method="post" action="">
 <table width="261" border="0" align="center" cellpadding="0" cellspacing="2">
 <tr align="center">
 <td colspan="2" bgcolor="#003399"><font color="#FFFFFF" size="2" face="Verdana, Arial, Helvetica, sans-serif"><strong>Gerador
 de CPF e CNPJ Válidos</strong></font></td>
 
 </tr>
 <tr>
 <td colspan="2" align="center" bgcolor="#CCCCCC"><input name="numero" type="text" id="numero" size="20"></td>
 </tr>
 <tr>
 <td width="168" align="center" bgcolor="#CCCCCC"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">
 <input name="tipo" type="radio" value="cpf" checked>
 CPF
 <input type="radio" name="tipo" value="cnpj">
 CNPJ</font></td>
 
 <td width="126" align="center" bgcolor="#CCCCCC"><input type="button" name="Button" value="Gerar" onClick="faz()"></td>
 </tr>
 </table>
</form>
<div align="center">
 <font size="1" face="Verdana, Arial, Helvetica, sans-serif">© 2010 - 2011 por: Marcos Guiga
 <br>
</font> </div>
</body>
</html>
Compartilhe Também:

Comentários(4)

Deixe seu comentário