Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi wie einmaliger Lizenz key erstellen für mein proggi... (https://www.delphipraxis.net/44348-wie-einmaliger-lizenz-key-erstellen-fuer-mein-proggi.html)

Duffy Duck 18. Apr 2005 11:52


wie einmaliger Lizenz key erstellen für mein proggi...
 
Hallo Leute,

habe da eine Anfänger Frage für euch...

Ich habe mir eine kleine Anwendung erstellt und bin eigentlich soweit fertig damit. Ich habe im Google auf einer Seite gelesen dass es möglich wäre eine "CD Key" funktion einzubinden. Habe hier folgender Code gefunden:

Delphi-Quellcode:
function CDKey(Seed:String): String;
const Key1: Array[0..9] of Char = ('2','5','8','9','5','a','1','3','6','7');
Key2: Array[0..9] of Char = ('8','3','4','0','1','7','x','9','3','9');
v baergi ni: integer;
result := Seed + '-';
for i:= 1 to length(Seed) do
result := result + Key1[Ord(Seed[i])-48]; result := result + '-';
for i:= 1 to length(Seed) do
result := result + Key2[Ord(Seed[i])-48]; end; ...
if CDKey(Copy(Eingabe.Text,1,4)) = Eingabe.Text then
Caption := 'Richtig' else Caption := 'falscher Key';
Wie und wo muss ich nun dies einbinden damit ich einen CD Key erhalte und den auch eingeben kann?
Mir geht es hauptsächlich darum, um zu verstehen wie und wo dieser auch abgelegt wird.
Also zum bsp. wenn ich nun einen solchen Code (irgendwie erstelle, wie auch immer???) habe und den auch eingebe, wird dieser in der Windows Registry abgelegt? oder muss dieser jedesmal neu eingegeben werden wenn ich meine Applikation starte?

ThX schon mal

Duffy Duck

Khabarakh 18. Apr 2005 12:23

Re: wie einmaliger Lizenz key erstellen für mein proggi...
 
Die Funktion gibt dir nur einen Key als String zurück, Abspeichern und Überprüfung musst du selbst noch einbauen. Für den Zugriff auf die Registry gibt es die Klasse Delphi-Referenz durchsuchenTRegistry.

Duffy Duck 18. Apr 2005 12:26

Re: wie einmaliger Lizenz key erstellen für mein proggi...
 
hmmmmm, im diesem fall also eine grössere sache so etwas zu realisieren...??? Also das mit der Key erstellung und einmaliger abfrage und Registry eintrag oder?

Duffy Duck

freak4fun 18. Apr 2005 12:34

Re: wie einmaliger Lizenz key erstellen für mein proggi...
 
Ja, es ist schon etwas aufwändig. Aber man sollte es mal gemacht haben, damit man sieht was da an Arbeit hinter steckt. Außerdem ist es immerwieder schön, wenn man fragt ob es denn nun sicher ist. :mrgreen: Aber du musst selbst wissen, ob du es versuchen willst. Ich kann nur sagen: Mach´s einfach mal. ;)

MfG
freak

Duffy Duck 18. Apr 2005 16:29

Re: wie einmaliger Lizenz key erstellen für mein proggi...
 
Nun ja, die sicherheit kommt erst mal an 2ter stelle....
wichtig ist wie kann ich nun vorgehen??

hat jemand einen Tip für mich, der auch für einen Anfänger verständlich ist?

ThX
Duffy Duck

Meflin 18. Apr 2005 16:37

Re: wie einmaliger Lizenz key erstellen für mein proggi...
 
Zitat:

Zitat von Duffy Duck
Nun ja, die sicherheit kommt erst mal an 2ter stelle....
wichtig ist wie kann ich nun vorgehen??

hat jemand einen Tip für mich, der auch für einen Anfänger verständlich ist?

ThX
Duffy Duck

moin,

prinzipiell gibts da viele verschiedene vorgehensweisen... du musst dich erstmal für eine entscheiden ;)
1. eingabe des usernamen -> daraus wird der key berechnet, in einem geheimen verfahren, das nur du kennst. der user gibt seinen namen ein und muss den zu dem namen passenden key eingeben
2. du nimmst dir irgendeinen wert, der mit ziemlicher wahrscheinlichkeit für den computer einmalig oder fast einmalig ist oder kombinierst ein paar werte, und berechnest daraus den key. allerdings brauchst du dann einen webserivce, da die daten ja an dich übermitelt werden müssen, damit du (oder dein service) den key daraus berechnen können, den du dann dem user wiederum zukommen lässt, der diesen in dein programm eingibt
3. dein user muss sich online bei dir anmelden und bekommt auf diese weise einen key. dann startet er deine anwendung, und diese verbindet sich wiederum mit deinem service, der user gibt seine zugangsdaten ein, bingo

usw usw... es gibt noch viele andere möglichkeiten 8)

also wenn du sagen könntest, welche du machen willst, kann man dir auch detaileirter weiterhelfen ;)


Duffy Duck 18. Apr 2005 16:44

Re: wie einmaliger Lizenz key erstellen für mein proggi...
 
Zitat:

Zitat von Meflin

moin,

prinzipiell gibts da viele verschiedene vorgehensweisen... du musst dich erstmal für eine entscheiden ;)
1. eingabe des usernamen -> daraus wird der key berechnet, in einem geheimen verfahren, das nur du kennst. der user gibt seinen namen ein und muss den zu dem namen passenden key eingeben
usw usw... es gibt noch viele andere möglichkeiten 8)

also wenn du sagen könntest, welche du machen willst, kann man dir auch detaileirter weiterhelfen ;)

Danke für deine schnelle Antwort.

Im prinzip reicht mir punkt 1 vollkommen aus....

Duffy Duck

Meflin 18. Apr 2005 16:54

Re: wie einmaliger Lizenz key erstellen für mein proggi...
 
Zitat:

Zitat von Duffy Duck
Danke für deine schnelle Antwort.

Im prinzip reicht mir punkt 1 vollkommen aus....

Duffy Duck

ok, das ist nicht weiter schwer

1. brauchst du einen algorithmus, der aus irgendeinem wert einen anderne wert berechnet, möglichst so, dass man nicht dahinter kommt ;) da kannst du einerseits z.b. einfach hashverfahren wie md5 oder sha verwenden, indem du den namen des benutzers mit einem geheimen suff oder präfix versiehst und diesen wert einfach hashst, dann erhältst du sozusagen den key, oder aber du übergibst den namen der funktion, die du schon im ersten beitrag erwähnt hast, die erstellt einen key der etwas mehr nach registrierungskey aussieht ;) allerdings solltest du dann unbedingt das key1 und das key2 array verändern (also die werte), da sonst evtl jemand auf die idee kommen könnte, dass du diesen algorithmus wie er ist aus dem internet verwendest. alternativ oder besser zuätzlich kanst du auch hier die eingabe mit einem geheimen suff und oder präfix versehen, bevor du ihn der funktion übergibst.

2. brauchst du irgendeine möglichkeit, wie deine benutzer an den key kommen, z.b. eine onlineanwendung, die ebenfalls den key berechnen kann, und ihn anch bezahlung oder registrierung dem user zusendet.

3. dann musst du nu im programm überprüfen, ob bereits ein key eingegeben wurde, wenn ja, dann lässt du das registrierungsformular aus, wenn nein, zeigst du es an. dann überprüfst du wiederum, ob der eingegeben key zum eingegeben namen passt (indem du den namen der funktion übergibst und schaust, ob das ergebnis gleich der keyeingabe des users ist). ist dies der fall, speicherst du den key irgendow ab, möglichst so, dass man ihn nicht findet, ist die eingabe falsch, sagst du das dem user :)

ein satz zum abspeichern des keys: auch hier gibts verschiedene möglichkeiten:
1. die registry
2. in einer ini datei
3. in einer xml datei
4. inb irgendeiner datei, hauptsache dien prog findet sie

dabei kannst du den key getrost als plaintext, soll heissen in unverschlüsselter form, abspeichern, da er ja, wenn er in der registry oder sonstwo auftaucht bereits vom user korrekt eingegeben wurde und somit bekannt ist. den wert, den deine überprüfungsfunktion im prog erstellt, den solltest du allerdings niemals nie irgendwo abspeichern ;)

beachte allerdings, dass diese methode weder sehr sicher noch "effizient" ist: man kann unbegrenzt viele anwendungen mit einem richtigen namen/schlüssel paar registrieren, aber für den anfang dürfts reichen ;)

Duffy Duck 18. Apr 2005 17:01

Re: wie einmaliger Lizenz key erstellen für mein proggi...
 
puhhh für einen Anfänger wie mich, hört sich das wie eien Lawine die auf mich zukommt. Aber egal, ich setze mich mal ran und versuche deinen Tip umzusetzen...
Vorerst mal hast mir damit sehr geholfen...

Mal sehen wie es mit den Coden klappt...!

ThX
Duffy Duck

Meflin 18. Apr 2005 19:44

Re: wie einmaliger Lizenz key erstellen für mein proggi...
 
Zitat:

Zitat von Duffy Duck
puhhh für einen Anfänger wie mich, hört sich das wie eien Lawine die auf mich zukommt. Aber egal, ich setze mich mal ran und versuche deinen Tip umzusetzen...
Vorerst mal hast mir damit sehr geholfen...

Mal sehen wie es mit den Coden klappt...!

ThX
Duffy Duck

nicht verzagen, vermutlich brauchst du noch nichtmal so viele zeilen code wie ich für meine erklärung ;)
den algorithmus, der dir den schlüssel berechnet hast du ja auch sschon, und bei der ganzen angelegenheit dürfte der das komplexeste überhaupt sein. alles andere sind peanuts :)


Duffy Duck 20. Apr 2005 12:21

Re: wie einmaliger Lizenz key erstellen für mein proggi...
 
Erstmals vielen Dank an Meflin für seine ausführliche Beschreibung....
komme nun aber nicht wirklich recht weiter mit dem ganzen. den unten stehender Code (den ich von irgendwo, ein wenig abgeändert habe) generiert mir nun meinen Key (zufall) denn ich auch brauche. (Sicherheit ist im mom nicht so wichtig)
Wie kann ich es nun bewerkstelligen, dass ich die Abfrage im meinem Programm erhalte? Heisst:
Prog. wird gestartet, die Abfrage für den Key soll kommen, wenn nicht Registriert dann eintrag in die Windows Registry, wenn schon Registriert keine weiteren meldungen und Prog. kann ohne weiteres gestartet werden...

Delphi-Quellcode:
unit Code;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Grids, Mask, DBGrids;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    GroupBox1: TGroupBox;
    Label6: TLabel;
    Label7: TLabel;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);

  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

function RandomPassword(PLen:Integer):String;
var
str:String;
begin
Randomize;
//string with all possible chars
str:='ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890';
Result:='';
repeat
Result:=Result+str[Random(Length(str))+1];
until(Length(Result)=PLen)
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
//generate a password with 16 chars
Label1.Caption:=RandomPassword(4);
Label2.Caption:=RandomPassword(4);
Label3.Caption:=RandomPassword(4);
Label7.Caption:=RandomPassword(4);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  close;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin

end;

end.

noch etwas zu diesem Code, hier werden lediglich zufalls zahlen generiert. Wäre es mit diesem Code auch möglich die Zahlen durch einen Namen zu generieren lassen?

ThX
Duffy Duck

PS: Für dich Meflin wird es Peanuts sein, für mich ist es bis hierher schon ein risiges Erfolgserlebnis... :-)))

Meflin 20. Apr 2005 16:40

Re: wie einmaliger Lizenz key erstellen für mein proggi...
 
Hi,

verwende doch einfach den code aus deinem ersten beitrag ;) dem kannst du nämlich einen string übergeben (den namen des suers) und aus dem selben string wird dieser algorithmus immer denselben wert berechnen und zurückgeben, soll heissen (nur als beispiel) wenn du hans eingibst kommt wurscht raus, und zwar jedesmal :) wenn du allerdings wiener eingibts, liefert die funktion nicht wurscht sondern schnitzel, und das auch immer, wenn man wiener eingibt (das tut die obige funktion natürlich nicht, nur zur veranschaulichung ;) ).

also mach doch erstmal ne anwendung mit 2 editfeldern, in den du dne user seinen namen und seine serial eingeben lässt, und mache eine einfache überprüfung ala messagebox dieser key ist gültig oder nicht gültig :)


Duffy Duck 20. Apr 2005 23:16

Re: wie einmaliger Lizenz key erstellen für mein proggi...
 
ich könnte Weinen vor Wut, jetzt habe ich gar nichts mehr im Griff... :wall: seit Stunden versuche ich auf einen Grünen zweig zu kommen und falle immer wieder runter. :cry:
Wenn ich nun den Code in eine leere Anwendung einfüge, und ein Edit Feld erstelle und dann auf F9 gehe, steht im "Caption" erst dann "Richtig" wenn ich auch im Feld den Wert "Edit1" mit backspace entferne...

Sobald ein Wert eingegeben wird heisst es "Falscher Key"! (Denke, soweit sollte es ja gut sein).
Wo kann ich aber den Key eingeben also zum bsp. einen Namen, damit es auch mit "Richtig" bezeichnet wird?
Habe wirklich keinen blassen schimmer wie das gehen soll...

ThX
Duffy Duck

Harry M. 21. Apr 2005 06:15

Re: wie einmaliger Lizenz key erstellen für mein proggi...
 
gutem morgen,

ich will ja nix sagen... aber welcher deiner "hochwertigen" programme ist es wert, das du sie mit einer serial schützen musst. bitte entschuldige, aber wenn du noch nicht einmal aus der funktion entnehemn kannst das du deinen "key" in eingabe.text schreibst, dies kann (meist) eine edit combobox oder memo sein, versuche es doch erstaml mit den grundlagen anstatt den dem anwedner deines programmes mit einer eingabe von zeichen zu nerven, die sich mit dem einen oderer andere trick ja meist ohnehin umgehen lassen. nix für ungut.. :smile:

gruß harry

Duffy Duck 21. Apr 2005 09:48

Re: wie einmaliger Lizenz key erstellen für mein proggi...
 
Zitat:

Zitat von Duffy Duck
Mir geht es hauptsächlich darum, um zu verstehen wie und wo dieser auch abgelegt wird.

ThX schon mal

Duffy Duck

@ Harry

Nun, ich weiss ich sollte wirklich bei den Grundlagen beginnen. Aber um zu verstehen, sollte man probieren, nur so Denke ich versteht es man doch am besten..... oder?

Wie gesagt, es geht mir nicht darum um ein Programm zu schützen sondern nur um zu verstehen. Und seit ich dieses Forum gefunden habe, glaube ich hier die Beste, sowie eine Profesionelle unterstützung zu bekommen... hoffe ich mal.

Manche werden Denken: "Was für ein Anfänger der nicht mal versteht dass er eine eingabe.text oder edit combobox braucht". Wenn Du aber etwas schon hundert mal gemacht hast ist es ja schon selbstverständlich.... :hi:

ThX trotzdem

Duffy Duck

Meflin 21. Apr 2005 17:36

Re: wie einmaliger Lizenz key erstellen für mein proggi...
 
@harry: wenn du nix sagen willst, dann lass es doch einfach ;)

@duffy:
ok, du legst auf deine form 2 editfelder, eins nennst du edName, das andere edKey.
dann brauchst du noch einen button. du klickst doppelt auf den button und gelangst in die codeansicht, dann fügst du diesen code ein:
Delphi-Quellcode:
if CDKey(edName.text) = edKey.text then ShowMessage('richtiger key') else ShowMessage('Falscher Key');
vorher musst du noch die cd key function einbinden.
dann startest du das prog, gibst deinen namen ein, und einen key, aber dummerweise wirst du feststellen, dass du den key ja selber nicht kennst, und deswegen immer eine falsche eingabe machst ;)
also bastelst du dir noch eine 2. anwendung mit einem edit edName und einem label lKey, und wieder einem button den du mit folgendem code versiehst:
Delphi-Quellcode:
lKey.Caption := CDKey(edName.text);
auch hier musst du zuerst noch die cdkey function einbinden. mit dem programm kannst du dann für einen namen gültige keys generieren, du solltest es folglich nicht deinen usern zukommen lassen ;)
mache also damit ein paar testpaare, und teste sie in der ersten anwendung.


Duffy Duck 21. Apr 2005 19:57

Re: wie einmaliger Lizenz key erstellen für mein proggi...
 
Hey Meflin

nun fühle ich mich wie ein 5 Jähriger, der sein Weihnachts päckchen endlich öffnen durfte. Denn, genau so, nach deinen Angaben hat es auch (natürlich) funktioniert... :hello:
So, jetzt Werte ich mal das ganze aus, um zu sehen was und wo an Daten und informationen übergeben wird...



Nochmals ein riesen Dank an Dich Meflin

Duffy Duck
:hi: :hi: :hi:


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:36 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz