![]() |
Hashproblem
Hallo,
dieser Befehl gibt immer den gleichen Wert aus, auch wenn man den Text in der Key_Edit ändert.
Delphi-Quellcode:
Warum? :gruebel:
Hash_Edit.Text := MD5Print(MD5.MD5File(Key_Edit.Text));
Hier die ![]() mfg freak |
Re: Hashproblem
Wenn du n Hash-Problem hast, würd ich mal die Drogenberatung aufsuchen :mrgreen:
Kann es sein, dass das Ding ne Datei erwartet und keinen String? |
Re: Hashproblem
Ja, steht ja da. :wall:
mfg freak |
Re: Hashproblem
Hi,
sollte das nicht MD5.MD5String heißen? |
Re: Hashproblem
Jepp. :roll:
Wer lesen kann ist klar im Vorteil. :mrgreen: mfg freak |
Re: Hashproblem
Ich möchte die Gelegenheit nutzen und nochmal auf die Drogenberatung verweisen -roflwech- :mrgreen:
|
Re: Hashproblem
[OT] Ja, ich bin jetzt auf Programmieren & Cola als Ersatzdrogen umgestiegen. Bin mir aber nicht sicher was jetzt das schlimmere ist. :mrgreen: [/OT]
Wie setz ich den/das Hash jetzt ein? :gruebel: mfg ferak |
Re: Hashproblem
Kommt drauf an wofür du ihn brauchst -g-
|
Re: Hashproblem
Da sist mein Problem. Ich will den SourceCode nicht posten. :zwinker:
Also ich arbeite ja immernoch an meinem KeyGenerator. Ich hab eine .exe da geb ich Name und Key ein. Jetzt soll geprüft werden ob der Key gültig ist. Das will ich aber mit einem Hashwert des Keys machen. Die Prüfung findet in einer dll statt. Problem: Ich erstelle den HashWert bei Erzeugung des Keys. Muss ich den dann irgendow Speichern? Woher weiss ich welcher HashWert zu welchem Key gehört? ... mfg freak |
Re: Hashproblem
MD5 ist ne einseitige Verschlüsselung...
Bedeutet: Wenn du nen Key hast, kannst du den zum Hash machen und prüfen ob er identisch ist mit dem Hash, wenn du nur den Hash hast kannst du daraus NICHT wieder den originalen Key machen... |
Re: Hashproblem
Die Funktion MD5File(N: string) erzeugt blöderweise keine Exception, wenn die Datei nicht
geöffnet werden konnte und liefert dann immer den Hashwert eines Leerstrings zurück. :wall: Deshalb:
Delphi-Quellcode:
function MD5File(N: string): MD5Digest;
var FileHandle: THandle; MapHandle: THandle; ViewPointer: pointer; Context: MD5Context; begin MD5Init(Context); FileHandle := CreateFile(pChar(N), GENERIC_READ, FILE_SHARE_READ or FILE_SHARE_WRITE, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL or FILE_FLAG_SEQUENTIAL_SCAN, 0); if FileHandle <> INVALID_HANDLE_VALUE then raise EReadError.CreateFmt('Can''t open file <%s>', [N]); |
Re: Hashproblem
du kannst doch wenn du den Key hast jederzeit wieder den hashwert dazu ermitteln, und die Beiden vergleichen.
Das kannst du in einer Datenbank (oder sonstwie) speichern, oder halt zur Laufzeit immerwieder ermitteln... |
Re: Hashproblem
Hi,
der HashWert ist immer einmalig. "Hallo" ergibt einen anderen wert wie "hallo". Es kommt also auch auf Groß/Kleinschreibung an. |
Re: Hashproblem
Hm...
ich schicke Name und Key an die H.dll und will ein richtig oder falsch zurückbekommen. Das heisst auf deutsch das es Sinnlos ist. Weil dan irgendein Cracker meine H.dll erstzt und dann ist alles hin. Aber irgendwie muss ich doch nen Schutz erreichen?! mfg freak |
Re: Hashproblem
Äehm...
Einen gewissen Schutz erreichst du nur, wenn du beim Programmstart jedes mal prüfst, ob dein programm noch auf dem Rechner Läuft, auf dem du es installiert/registriert hast. Eine 100% Schutz gibte es nicht. Aber man kann allen Kiddies und Noobs das Leben schon schwer machen, indem du dir solche schweinereien ausdenkst. Die Geschichte mit dem Hash ist ne feine Sache, wenn man Passwörter oder sowas "verschlüsselt" speichern will. Die Geschichte Mit der DLL würde ich kippen... Braucht nur jemand ne DLL hinstellen, die immer - was auch kommt - True ausgibt und fertig...
Delphi-Quellcode:
du könntest einen Key (einen 32 Stelligen Hash) in der Registry ablegen, der den Computernamen (schlechtes Beispiel - irgendwas halt) enthält. Wenn noch kein Eintrag existiert, wird der CD-Key (aufbewahren!!) abgefragt, der liesst etwas persönliches aus dem Computer aus, erstellt einen Hash davon und speichert den weg. Jedesmal wenn dein Programm startet, könnte dieser hash nochmal ermittelt werden und mit dem alten aus der registry verglichen.
function sowiso(Bla, Blaa, Blaaa: irgendwas):Boolean;
begin result:=true; end; In die registry darfst du natürlich nur einmal schreiben. Nämlich dann, wenn der CD-Key richtig eingegeben wurde. Wenn nun der Hash nicht übereinstimmt kannst du A) den user auffordern einen neuen Key anzufordern (Gültigkeit festlegen) oder schlicht nochmal neu eingeben... Aber das ist nur eine Möglichkeit. Deiner Phantasie sind da keine grenzen gesetzt. Und wie gesagt 100% sicher gibts nicht und 99% nur mit enormen Aufwand. MfG Tonic |
Re: Hashproblem
Dankeschön.
Also ich hab ja das mit der .dll auch gemacht weil ioch mal was mit .dll's machen wollte. Ich würde ja auch nicht nur flase oder true hin und herschicken. ;) ### Ich überleg mir was feines. ### mfg freak |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:07 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