Eu preciso fazer um cartão de chave de segurança (ex: igual o do bradesco que todo cliente possui um cartão para acesso ao internet banking)
alguém conhece alguma API que me ajuda a fazer isso?
Ou alguém tem alguma dica para me ajudar?
Att
Eu preciso fazer um cartão de chave de segurança (ex: igual o do bradesco que todo cliente possui um cartão para acesso ao internet banking)
alguém conhece alguma API que me ajuda a fazer isso?
Ou alguém tem alguma dica para me ajudar?
Att
Você precisa implementar aquele teste do cartãozinho com 40 posições de 4 dígitos?
Ou você precisa implementar o certificado digital em disquete?
Ou então aquela verificação do “token” (aquele aparelhinho que mostra um número de 6 dígitos, que vale por alguns segundos)?
No primeiro caso, gere 40 números aleatórios, grave-os na sua base.
Quando o cliente for solicitar alguma transação, sorteie um desses números que ainda não foi usado, e peça a sua posição.
No segundo caso, você precisa estudar certificação digital (não é muito trivial)
No terceiro caso, você precisa contactar o fabricante do token (por exemplo, a Vasco Security Systems), que lhe fornecerá o token e também um programa que deve ser usado no servidor.
Thingol,
Você precisa implementar aquele teste do cartãozinho com 40 posições de 4 dígitos?
acontece que vou precisar gerar varios cartoes com 50 posições e numa deles pode ser igual.
Ora, isso é terrivelmente boboca. Você pode fazer algo como:
private static Random r = new Random();
/**
* Sorteia "qtd" números de 4 posições.
* @param qtd A quantidade de números
* @return Os números sorteados.
*/
Integer[] sorteiaCartao (int qtd) {
Set<Integer> sorteados = new ArrayList<Integer>();
while (sorteados.size() < qtd) {
Integer numero = r.nextInt (10000);
sorteados.add (numero);
}
// Note que os números não estão em ordem
// muito "aleatória". Vamos então pô-los em ordem aleatória
List<Integer> numeros = new ArrayList<Integer>();
numeros.addAll (sorteados);
Collections.shuffle (numeros); // isto deixa os números em ordem aleatória mesmo!
return (Integer[]) numeros.toArray (new Integer[0});
}
Ora, isso é terrivelmente boboca. Você pode fazer algo como:private static Random r = new Random(); /** * Sorteia "qtd" números de 4 posições. * @param qtd A quantidade de números * @return Os números sorteados. */ Integer[] sorteiaCartao (int qtd) { Set<Integer> sorteados = new ArrayList<Integer>(); while (sorteados.size() < qtd) { Integer numero = r.nextInt (10000); sorteados.add (numero); } // Note que os números não estão em ordem // muito "aleatória". Vamos então pô-los em ordem aleatória List<Integer> numeros = new ArrayList<Integer>(); numeros.addAll (sorteados); Collections.shuffle (numeros); // isto deixa os números em ordem aleatória mesmo! return (Integer[]) numeros.toArray (new Integer[0}); }
Type mismatch: cannot convert from ArrayList<Integer> to Set<Integer>

A classe Set, se não me engano, não pode conter elementos duplicados né…
Troquei para Arraylist mesmo, talvez apareçam numeros duplicados…
Isso é que dá pôr código sem testar 
O que estava errado, basicamente, é eu ter esquecido de criar a variável “r”, e o HashSet que tinha omitido.
import java.util.*;
class TesteSorteioCartao {
private static Random r = new Random();
Integer[] sorteiaCartao (int qtd) {
Set<Integer> sorteados = new HashSet<Integer>();
while (sorteados.size() < qtd) {
Integer numero = r.nextInt (10000);
sorteados.add (numero);
}
// Note que os números não estão em ordem
// muito "aleatória". Vamos então pô-los em ordem aleatória
List<Integer> numeros = new ArrayList<Integer>();
numeros.addAll (sorteados);
Collections.shuffle (numeros); // isto deixa os números em ordem aleatória mesmo!
return (Integer[]) numeros.toArray (new Integer[0]);
}
// Exemplo - por favor, use "String.format ("%04d")" ou algo parecido para
// pôr zeros à esquerda, no seu caso.
public static void main(String[] args) {
System.out.println (Arrays.asList (new TesteSorteioCartao().sorteiaCartao(40)));
}
}
Oi Thingol, tenho uma duvida sobre o código que vc criou
Pra que serve aquele new Integer[0]?
Valeu abraços