16 de outubro de 2007

Crie seu próprio gerador de CPF

Olá pessoal,

Uma coisa muito ultilizada para a maiorias dos desenvolvedores Web é o CPF, porque sempre tem algum sistema de cadastro pra testar ou pra criar.

Como muitas vezes precisamos de vários CPFs para testar nossos programas, eu descidi postar a lógica de como um CPF funciona, e talvez assim você possa criar seu próprio gerador de CPF para testar seus produtos.

O CPF é composto de 11 algorítmos, onde os 9 primeiros são os algorítmos randômicos, e os 2 ultimos são os algorítmos de verificação.

ex.
351.253.324-XX (XX > Algorítmo de verificação)

Bom agora vamos por a mão na massa! ;D


Para calcular o primeiro algorítmo de verificação.

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





















351254324
1098765432

Multiplique os valores de cada coluna:































351253324
1098765432
304581430151268

Calcule o somatório dos resultados (30+45+...+6+8) = 168

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

Ex: 168 dividido por 11 obtemos 15 como quociente e 3 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 vamos subtrair o valor obtido da divisão.

Ex: 11-3 = 8 (oito). Já temos portanto o primeiro algorítmo de verificação do nosso CPF, confira:
351.253.324-8X.

Para calcular o segundo algorítmo de verificação.

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 11, 10, 9, 8, 7, 6, 5, 4, 3, 2 já que estamos incorporando mais um algarismo para esse cálculo.

Veja:






















3512533248
111098765432


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: (33+50+...+12+16) = 212.


































3512533248
111098765432
335091635181581216


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: 212 dividido por 11 obtemos 19 como quociente e 3 como resto da divisão.

Caso o valor do resto da divisão seja menor que 2, esse valor passa automaticamente a ser 0 (zero), caso contrário vamos subtrair o valor obtido da divisão.

Ex: 11-3 = 8 (oito). Já temos portanto o segundo algorítmo de verificação do nosso CPF, confira:
351.253.324-88.

Neste caso chegamos ao final dos cálculos e descobrimos que os dígitos verificadores do nosso CPF são os números 8 e 8, portanto o CPF ficaria assim: 351.253.324-88.

Básicamente esse gerador de CPF ele randômiza os 9 primeiros algorítimos e depois calcula a validação deles com a regrinha.

Até mais pessoal!
;D

6 comentários:

Anônimo disse...

xD

Agora só falta um gerador de cartao de credito, e um gerador de código de seguranca, pra fazer umas compras pela NET


auehhuauehuae

; juuul caos* disse...

quee diiifiiciiil ;X

OloKooo !
asasIHEOIASUeuAHEOIAHeuoiAHOEI

Unknown disse...

entaum eu tava fazendo tuuuudo³ isso.

e percebi um erro.

talvez seja erro meu... mas a soma da primeira parte naum deu 168 e sim 173.

;D

Unknown disse...

Olá n3k0z3r0, cabei de conferir e tem um erro mesmo ;D

na primeira tabela eu falo que vou multiplicar

5,4,3
6,5,4

5x6 + 4x5 + 3x4 = 62

e na tabela de multiplicação eu coloquei o valor errado e multipliquei =;/
5,3,3
6,5,4

5x6 + 3x5 + 3x4 = 57

daria valor diferente, mas a lógica seria a mesma meu amigo.. ;D
no final vc apenas confere pra ver se o valor do RESTO é maior q 2
se for vc pega o valor do resto e subtrai 11
caso contrário o valor do primeiro verificador do CPF é 0.

espero ter ajudado!
até mais ;)
e vou corrigir o tuto!
vlws

Cristian Ewerton disse...

Uau, valeu, funcionou de verdade, cara você é um genio!!!
Valeu, se eu fosse mas flexivel eu te dava um beijo!!!!

Cristian Ewerton disse...

Uau, valeu, funcionou de verdade, cara você é um genio!!!
Valeu, se eu fosse mas flexivel eu te dava um beijo!!!!