Ir ao conteúdo
  • Cadastre-se

Criar Serial Key nas aplicações delphi


rockzilla2109

Posts recomendados

Olá amigos, gostaria de uma ajuda.

Pesquisei bastante na internet e não achei nada que me ajudasse a elaborar um algoritmo para criar Serial Key para ser usado em minhas aplicações, no estilo das Seriais Keys de instalação do windows.

Prefiro gerar a Serial Key baseado na versão do meu soft. e na data de instalação. Sei que tudo é à base de matemática a partir de um número base junto com a data de instalação e versão do arquivo. Mas como seria esse cálculo e como poderia fazer esses cálculos serem aceitos pela aplicação sendo que a data é algo variável, e portanto, imprevisível sobre quando a instalação está sendo feita?!?

Resumindo:

1 - preciso criar uma aplicação que gere Serial Keys que podem ser aceitos pelo programa destino e

2 - preciso fazer a decodificação da Serial Key no programa destino para verificar se está correto ou não.

Aguardo ansiosamente alguma ideia sobre como fazer isso ou então um novo conceito para a geração de um Serial Key.

Obrigado.

Link para o comentário
Compartilhar em outros sites

  • 11 meses depois...
  • mês depois...

Olha cara esses dias eu fiz um bem complicadinho assim:

Experimenta colocar 2 TEdit e 1 TButton no Form e coloque o onClick do Form esse:

procedure TForm1.Button1Click(Sender: TObject);

var

i, CorrectKey, TempN: Integer;

PassedKey, NewKey, TempS: String;

begin

try

TempN := 0;

CorrectKey := 0;

PassedKey := Edit1.Text;

for i := 1 to Length(PassedKey) do

begin

CorrectKey := CorrectKey + (ord(PassedKey) * 2) + ( i * i * i * i * i * i * 5 * (i * 100)) + Length(inttostr(CorrectKey));

end;

CorrectKey := CorrectKey * 1024;// * 512 * 256 * 128 * 64 * 32 * 16 * 8 * 4 * 2 * 1;

inc(CorrectKey, CorrectKey);

if CorrectKey = 0 then CorrectKey := 1024*512*ord(PassedKey[1]);

if CorrectKey < 0 then CorrectKey := (CorrectKey - (CorrectKey * 2));

for i := 1 to Length(inttostr(CorrectKey)) - 1 do

NewKey := NewKey + uppercase(char($40 + ord(inttostr(CorrectKey))));

SetLength(NewKey, 5);

NewKey := NewKey + '-' + inttostr(CorrectKey);

SetLength(NewKey, 11);

for i := 1 to Length(NewKey) do

if ((NewKey = 'A') or (NewKey = 'a')) then

TempS := TempS + 'Z'

else if (NewKey = '-') then

TempS := TempS + '-'

else if ((ord(NewKey) >= ord('0')) and (ord(NewKey) <= ord('9'))) then

TempS := TempS + char(ord(NewKey) + $15)

else

TempS := TempS + char(ord(NewKey)-1);

UpperCase(TempS);

NewKey := NewKey + '-' + TempS;

for i := 1 to Length(NewKey) do

inc(TempN, ord(NewKey));

while Length(inttostr(TempN)) < 5 do

TempN := TempN * 2;

NewKey := NewKey + '-' + inttostr(TempN);

SetLength(NewKey, 29);

Caption := NewKey; //ESSA LINHA FAZ A KEY CERTA APARECER NO CAPTION DO FORM, NÃO É NECESSÁRIA.

if Edit2.Text = NewKey then

ShowMessage('Senha correta!')

else

ShowMessage('Senha Incorreta!');

except

end;

end;

Como você pode ver eu usei o próprio nome pra fazer a senha :)

mas se você quiser algo mais simples veja esse que eu expliquei inclusive:

procedure TForm1.Button1Click(Sender: TObject);

var

i, CorrectKey: Integer;

PassedKey, Login: String;

begin

try

Login := Edit1.Text;

CorrectKey := 5; //Um número qualquer só pra complicar a vida do usuário

PassedKey := Edit2.Text;

for i := 1 to Length(Login) do //Pega todos os numeros do char

begin

if CorrectKey * (ord(char(Login)) * 2) > 0 {Verifica se o valor não vai ser 0} then CorrectKey := CorrectKey * (ord(char(Login)) * 2); //Multiplica CorrectKey pelo num do char vezes 15

end;

CorrectKey := CorrectKey + ((CorrectKey div 3) * 5); //Complica mais ainda a Key

if CorrectKey < 0 then Correctkey := CorrectKey - (CorrectKey * 2); //Se a Key for um numero negativo transforma em positivo

Caption := inttostr(CorrectKey); // Mostra a key no caption pra gente saber;

if IntToStr(CorrectKey) {Transfora a key em uma string} = PassedKey then //Verifica se a pessoa colocou a key certa pro login

ShowMessage('Certo') //Se sim mostra a mensagem Certo

else

ShowMessage('Errado'); //Se não mostra a mensagem Errado

except

end;

end;

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!