Pascal MD5Hash Funktion

Zhen

Lt. Junior Grade
Registriert
Aug. 2009
Beiträge
299
Hallo Leute,
ich hab mich jetzt bisschen in Pascal eingeübt, aber häng grad etwas fest.

Ich benutze nämlich "Inno Setup" um meine Setup-Routinen für Programme zu erstellen, aber bei meiner jetzigen Routine will ich ein Passwort abfragen, dass dann gespeichert wird. Das Passwort unverschlüsselt zu speichern ist ja natürlich eine gewaltige Sicherheitlücke :D

Inno Setup an sich bietet hierzu leider auch keine Funktion, jedoch kann man ja eigene Funktionen dafür in Pascal schreiben. Nun habe ich mich erkundigt ob Pascal eine MD5 Funktion bietet, aber auch hier fehlanzeige...

Daher wollte ich mir selber eine basteln, den Pseudo Code findet man ja bei Wikipedia... an der Stelle hänge ich jetzt aber leider fest :(

Irgendwie find ich nämlich keine Funktion in Pascal mit der ich z.B. 2^32 schreiben könnte. Auch die z.B. in C# verfügbare "Math.Floor(x)" Funktion gibts da nicht. Hat jemand vielleicht eine Idee wie ich das ganze trotzdem hinbekommen könnte?

Wäre euch für jegliche Hilfe sehr dankbar :)
 
hmm... scheint nicht zu funktionieren. Ich hab mir jetzt diese Pow Funktion von da genauso raußkopiert, aber er sagt mir bei der Zeile:

Code:
pow := exp(ln(x) * y);

Invalid Number of Parameters.

Sagt aber nicht mal welche Funktion da überhaupt gemeint ist. Ln oder exp :-/
 
Zur Erklärung:

das komische 2^32 nennt man Potenz - sie besteht aus der Basis 2 und dem Exponenten 32... Man Potenzrechnung hat man eigentlich in der 9. Klasse :)
Ergänzung ()

Sie benötigen entweder die Compiler-Direktive {$N+} am Anfang Ihres Quelltextes oder ein Kreuzchen vor »Option | Compiler... | Gleitkommaberechnungen | 80x87-Code«.
 
Die 9. Klasse hab ich schon ewig hinter mir :D :D
Außerdem wusste ich ja was es macht, nur das Schlüsselwörtchen Potenz war mir irgendwie entfallen :rolleyes:

Sowas passiert mir ehrlich gesagt öfters, dass mir die Schlüsselwörter auf der Zunge liegen, aber ich sie einfach nicht raußbekomme xDD
Ergänzung ()

Also allem Anschein nach akzeptiert der Inno Setup Compiler keine Direktiven. Ich bekomms irgendwie nicht hin :-/

Das ist jetzt echt ärgerlich...
 
hmm - wenn du es mit einer Schleife löst? solange nur ganzzahlige Exponenten verwendet werden könnte ich mir folgendes Vorstellen

funktion Potenziere(Basis, Exponent) {
zwischenerg = Basis;
Für (i = 0; i ++; i < Exponent) {
zwischenerg = zwischenerg * Basis;
}
return zwischenerg;
end}
Ergänzung ()

Achtung: ^^ Das ist von mir frei erfundener Pseudocode
Ergänzung ()

Hmm... oder du greifst darauf zurück?

http://www.fourmilab.ch/md5/
 
Danke für die Hilfe und die ganzen Tipps :)

Habs jetzt anders gelöst ;-)
Hab mir einfach in C# ein kleines Tool geschrieben das ich in die Routine mit aufnehme. Nach der Installation wird das Tool einfach gestartet und ihm wird als Parameter das "während der Routine" eingegebene Passwort übergeben.

Das Tool errechnet den Hash und schreibt diesen anschließend einfach in die Dateien oder Registry wo ichs halt haben möchte =D
 
WTF? Was ist denn mit euch los?
232 ist doch eine Konstante. Die muss man nicht jedes Mal neu ausrechnen. Einfach einmal in den Taschenrechner tippen und das Ergebnis so in den Quelltext reinschieben.
Wenn man denn überhaupt muss.
 
MD5 ist übrigens KEINE sichere Hashfunktion mehr, bitte verwende für Passworthashes doch sowas wie gesalzenes SHA2 oder gleich scrypt!
 
Danke für die Info.
Das scrypt kenne ich gar nicht. Werds mir gleich mal anschauen :)
 
Zurück
Oben