Geração de Serial

Bom dia galera!

Estou precisando de umas dicas. Preciso desenvolver uma ferramente que gere uma serial, e ao entrar com outra serial valide o programa pra ser usado, caso seja errado a serial não validar o programa.

Alguém sabe alguma classe ou pacote de algum grupo que posso usar?

Abraços.

Obrigado! :smiley:

primeiro vc deve saber quais dados vai usar para gerar o serial:
ex. : MAC da placa de rede
nome do computador, nome do usuario , empresa, nome do programa…
depois podes usar um MessageDigest de MD5 e criar 32 digitos hexa
para os dados que vc escolheu.

Essa é uma maneira,
existem umas 2987234098123 de fazer isso

o poder é de você!

:smiley:

[quote=dyorgio]primeiro vc deve saber quais dados vai usar para gerar o serial:
ex. : MAC da placa de rede
nome do computador, nome do usuario , empresa, nome do programa…
depois podes usar um MessageDigest de MD5 e criar 32 digitos hexa
para os dados que vc escolheu.

Essa é uma maneira,
existem umas 2987234098123 de fazer isso

o poder é de você!

:D[/quote]

Tem um exemplo do q vc citou acima?

Eu estou pegando o nome da empresa, a partir dai teria que gerar alguma serial. Mas não tenho ideia de como gerar.

MessageDigest.getInstance("MD5").digest("SUA STRING".getBytes())

O código acima retorna um array de bytes de 16 posições…
procure na net um método pronto para converter esses bytes para 32 bytes HEXA

ex: byte 169 - > hexa A9

Abs

eu faço a conversão byte - > hexa assim :

public static final byte[] byteToHexa(byte[] bytes) {
		byte[] result = new byte[bytes.length * 2];
		for (int i = 0; i < bytes.length; i++) {
			result[i * 2] = (byte) ((bytes[i] & 0xF0) >> 4);
			result[i * 2] += (result[i * 2] > 9 ? 0x37 : 0x30);
			result[(i * 2) + 1] = (byte) (bytes[i] & 0x0F);
			result[(i * 2) + 1] += (result[(i * 2) + 1] > 9 ? 0x37 : 0x30);
		}
		return result;
	}

será que alguem se habilita a fazer melhor? :stuck_out_tongue:
uma vez entrei numa discussão aqui pra remover acentos,
tomara que essa conversão tenha o mesmo sucesso :smiley:

Se você for lançar esse software no mercado, deve saber que essa solução já está ultrapassada. Faça uma validação online.

Não acho que seja ultrapassada, pelo contrário até hj é a forma q eu mais vejo sendo usada.

[quote=dyorgio]eu faço a conversão byte - > hexa assim :

public static final byte[] byteToHexa(byte[] bytes) {
		byte[] result = new byte[bytes.length * 2];
		for (int i = 0; i < bytes.length; i++) {
			result[i * 2] = (byte) ((bytes[i] & 0xF0) >> 4);
			result[i * 2] += (result[i * 2] > 9 ? 0x37 : 0x30);
			result[(i * 2) + 1] = (byte) (bytes[i] & 0x0F);
			result[(i * 2) + 1] += (result[(i * 2) + 1] > 9 ? 0x37 : 0x30);
		}
		return result;
	}

será que alguem se habilita a fazer melhor? :stuck_out_tongue:
uma vez entrei numa discussão aqui pra remover acentos,
tomara que essa conversão tenha o mesmo sucesso :D[/quote]

Eu não tenho uma solução melhor, mas tenho umad uvida, por que declarou esse método estatico e final?

Só se ve usando isso em softwares no estilo windows. Mas o certo para várias aplicações é usar validação online.

Veja se a maioria dos seus clientes terá internet, se for, então coloque.

Cara, coloco static e final porque o java permite
assim como coloco public em interfaces tb,
sei que se não colocar o final no caso de métodos static
e public nos métodos de interfaces o compilador fará isso
pra mim, mais tenho esse custume,
e não perco nunca :stuck_out_tongue:
haehahehahehaehaeh
Abs,

king, esses dias eu tava olhando uns tópicos e achei esses:

http://guj.com.br/posts/list/95556.java
http://guj.com.br/posts/list/28307.java#153345
http://guj.com.br/posts/list/94668.java#506997
http://guj.com.br/posts/list/75618.java#397727