Zitat von
Delphiturbo:
Ich muss 3 Sachen haben : Key, Benutzername, Serial !
Was ist der Unterschied zwischen Key und Serial? Was willst du überhaupt machen? Willst du, dass der eingegebene Benutzername sich im Key/Serial wiederspiegelt?
Zitat von
Nuclear-Ping:
Warum arbeitest du auch auf Stringebene, statt auf Binärebene?
Lol, soll der Benutzer jetzt schon einen Binärcode eingeben?
Wenn ich mal einen Vorschlag für ein "einfacheres" System für nicht so erfahrenere Delphi-Benutzer machen darf:
(Code vereinfacht zum Lernen)
Delphi-Quellcode:
function md5(input: string): string;
begin
result := md5Print(md5String(input));
end;
function mein_serialgenerator(benutzername: string): string;
var
mein_md5, mein_prekey, mein_serialkey: string;
const
// Mögliche Sicherheitslücke: mein_seed kann man aus der EXE herauslesen. Aber ich will es ja einfach halten
mein_seed := 'ABCD-Produkt-Produktversion-Edition';
begin
// Dein Benutzername ist jetzt als MD5 festgehalten
mein_md5 := md5(benutzername);
// Damit jetzt nicht jeder daran herumspielt und einen eigenen md5 generiert, legst du einen Seed dazu und machst nochmal md5
mein_prekey := md5(mein_seed + mein_md5);
// Nun hast du aber 32 Zeichen. Tu das deinen Anwendern bitte nicht an.
// Nimm die ersten 8 Zeichen meinetwegen. Das ist jetzt dein Serialkey, der aus dem Benutzernamen abgeleitet ist
mein_serialkey := copy(mein_prekey, 0, 8);
result := mein_serialkey;
end;
// Kontrolle der Benutzereingabe
function key_gueltig(eigegebener_benutzername, eingegebener_serialkey): boolean;
begin
if LowerCase(mein_serialgenerator(eigegebener_benutzername)) <> LowerCase(eingegebener_serialkey) then
begin
result := false;
end
else
begin
result := true;
end;
end;
Nicht sonderlich sicher. Aber akzeptabel. Gegen Disassembler ist das Pr0g halt nicht sicher.
PS: Überleg dir, ob du die Hardware des Benutzers miteinfließen lassen willst. Dann wäre Zwangsaktivierung etc. notwendig, was das Ganze ziemlich erschwert. Ist deine Software wirtschaftlich so entscheidend?
Gruß
blackdrake