Para compreender melhor esse esquema vamos usar um numero correto (cla-
ro, fictício) de um cc qualquer: 4128 7541 3218 0366. Usaremos
esse
numero durante toda a primeira parte do texto.
Os quatro primeiros dígitos de um cartão de credito indicam
o banco a
que pertence o cartão. No nosso numero exemplo os quatro primeiros
nu-
meros são '4128'. Estes dígitos indicam um cartão
do banco CITIBANK.
Obvio que um banco não vai possuir só um grupo de quatro
dígitos e sim
vários(tipo... o citibank tem o 4128, 4013, 4271, 4556...).
Ok, o primeiro numero do cc indica o seu tipo. Os principais são:
3 = American Express
4 = Visa
5 = MasterCard
6 = Discover
No nosso caso o cartão e' um belo VISA (numero 4). Agora repare
em todos
os dígitos que ocupam posição impar no cartão:
4128 7541 3218 0366
/ | | | | | | \
posição: 1 3 5 7 9 11 13 15
Cada numero que ocupa posição impar no numero do cartão
deve ser multiplicado por dois. Se o resultado dessa multiplicação
for menor que nove
deixe como esta e passe para o numero seguinte. Se o resultado
for
maior que nove, subtrai-se nove do resultado obtido. Nos números
de posição par não e' necessário qualquer esquema.
No nosso exemplo:
4 * 2 = 8 ; oito < nove
1 = 1 ; posição par
2 * 2 = 4 ; quatro < nove
8 = 8 ; posição par
7 * 2 = 14 ; 14 > 9, portanto, 14 - 9 = 5
5 = 5 ; posição par
4 * 2 = 8 ; oito < nove
1 = 1 ; posição par
3 * 2 = 6 ; seis < nove
2 = 2 ; posição par
1 * 2 = 2 ; dois < nove
8 = 8 ; posição par
0 * 2 = 0 ; zero < nove
3 = 3 ; posição par
6 * 2 = 12 ; 12 > 9, portanto, 12 - 9 = 3
6 = 6 ; posição par
Ok! O resultado que obtemos após fazer esse esquema foi:
8148 5581 6228 0336
Agora faca a soma de todos os números obtidos:
8+1+4+8 + 5+5+8+1 + 6+2+2+8 + 0+3+3+6 = 70
Paulada! Se o resultado da soma for múltiplo de 10 e também
for menor
que 150, pode ficar tranqüilo, o numero e' totalmente valido.
Repare
no nosso numero exemplo: 70 e' múltiplo de 10 e e' menor que
150 (ohhh!)
Conclui-se que o numero de cc que usamos como exemplo e' um numero
VISA
valido pertencente ao Citibank (código 4128).
Beleza! Mas com este esquema e' possível apenas verificar se
um cartão
e' realmente valido, o que não e' uma grande ajuda. Porem, vamos
agora
gerar um numero tendo por base apenas o código do banco.
Vamos gerar, por exemplo, um cartão VISA do citibank:
4271 ???? ???? ????
Escolhemos mais 11 números (tem que ser 11 e não 12),
aleatórios entre
0 e 9:
4271 0614 8230 113?
O passo seguinte e' tornar este numero um numero de cc valido. Como?
Usando aquele simples processo de verificação:
4 * 2 = 8 ; oito < nove
2 = 2 ; posição par
7 * 2 = 14 ; 14 > 9, portanto, 14 - 9 = 5
1 = 1 ; posição par
0 * 2 = 0 ; zero < nove
6 = 6 ; posição par
1 * 2 = 2 ; dois < nove
4 = 4 ; posição par
8 * 2 = 16 ; 16 > 9, portanto, 16 - 9 = 7
2 = 2 ; posição par
3 * 2 = 6 ; seis < nove
0 = 0 ; posição par
1 * 2 = 2 ; dois < nove
1 = 1 ; posição par
3 * 2 = 6 ; seis < nove
? = ? ; Verificar depois
Novo numero: 8251 0624 7260 216?
Fazendo a soma obtemos:
8+2+5+1 + 0+6+2+4 + 7+2+6+0 + 2+1+6+? = 52
Porra, 52 e' menor que 150 mas não e' múltiplo de 10,
enato, o numero
deste cartão não e' valido, correto? Nahh, ainda podemos
validar este
numero. Como? Se ainda temos um digito para colocar no numero certamente
colocaremos um numero que torne o cartão valido. No caso o numero
e' 8.
O numero do cartão valido ficaria:
4271 0614 8230 1138
OK! Temos um numero de cartão valido gerado com números
aleatórios, mas
corretamente validado. Agora vamos extrapolar, ou seja, obter outros
nu-
meros apartir de um numero base. O nosso numero e' 4271 0614 8230 1138.
Primeiramente escolhemos os números que queremos manter:
4271 0614 8230 1138
|||| |||| ==> Concluímos que você e' esperto o bastante
para deixar pelo
menos o código do banco.
Números mantidos: 4271 0614 ???? ????
Bem, agora o processo e' escolher outros números aleatórios
entre 0 e 9
para formar o numero, lembrando que o ultimo digito deve ser deixado
em
branco para validarmos o numero após terminado o esquema.