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.
1º 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:
3 | 5 | 1 | 2 | 5 | 4 | 3 | 2 | 4 |
10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 |
3 | 5 | 1 | 2 | 5 | 3 | 3 | 2 | 4 |
10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 |
30 | 45 | 8 | 14 | 30 | 15 | 12 | 6 | 8 |
4º 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.
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 11, 10, 9, 8, 7, 6, 5, 4, 3, 2 já que estamos incorporando mais um algarismo para esse cálculo.Veja:
3 | 5 | 1 | 2 | 5 | 3 | 3 | 2 | 4 | 8 |
11 | 10 | 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: (33+50+...+12+16) = 212.
3 | 5 | 1 | 2 | 5 | 3 | 3 | 2 | 4 | 8 |
11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 |
33 | 50 | 9 | 16 | 35 | 18 | 15 | 8 | 12 | 16 |
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: 212 dividido por 11 obtemos 19 como quociente e 3 como resto da divisão.
4º 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:
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
quee diiifiiciiil ;X
OloKooo !
asasIHEOIASUeuAHEOIAHeuoiAHOEI
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
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
Uau, valeu, funcionou de verdade, cara você é um genio!!!
Valeu, se eu fosse mas flexivel eu te dava um beijo!!!!
Uau, valeu, funcionou de verdade, cara você é um genio!!!
Valeu, se eu fosse mas flexivel eu te dava um beijo!!!!
Postar um comentário