Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Problem mit Erzeugen von Hash-Werten (https://www.delphipraxis.net/144953-problem-mit-erzeugen-von-hash-werten.html)

JBJHJM 20. Dez 2009 16:33


Problem mit Erzeugen von Hash-Werten
 
Habe ein Problem mit dem Erzeugen der RICHTIGEN Hashwerte:
Test mit Hash von "Hallo".
Habe folgende Wege probiert:

Delphi-Quellcode:
a := 'hallo';
b := 'hallo';
c := b;
edit1.text := 'hallo';
edit2.text := i;
x:= edit1.text;
y:= edit2.text;

showmessage(
CreateHash(a)+#13#10+
CreateHash(b)+#13#10+
CreateHash(c)+#13#10+
CreateHash(edit1.text)+#13#10+
CreateHash(edit2.text)+#13#10+
CreateHash('hallo')+#13#10+
CreateHash(x)+#13#10+
CreateHash(y)
Das ergibt [im übertragenen Sinne] eine Nachricht mit 5 verschiedenen Haswerten:

Hash Variante 1
Hash Variante 1
Hash Variante 1
Hash Variante 2
Hash Variante 3
Hash Variante 1
Hash Variante 4
Hash Variante 5

Wenn ich die Nachricht noch einmal ausgeben lasse, bleibt nur Variante 1 so wie vorher, obwohl nichts verändert wurde.
Variante 2 und 3 kann ich nachvollziehen, vielleicht hat die funktion Probleme mit direkten Eingaben aus einem Formobjekt, aber auch Variante 4 und 5 sind unterschiedlich.

Damit ist das ganze sinnlos geworden, da mein Ziel ist, den Hash eines gespeicherten Strings mit dem Hash eines eingegebenen Strings zu vergleichen.

Gibt es irgendeinen Unterschied zwischen
Delphi-Quellcode:
'hallo'
und
Delphi-Quellcode:
edit.text := 'hallo'
edit.text
???

Ich hoffe - biiiiitte - kann mir jemand helfen?

P.S. Der Code von CreateHash() sollte in Ordung sein, da er ja bei einigen Werten konstante Ergebnisse liefert, daher vermute ich, dass das Problem beim eingegebenen String liegt!

himitsu 20. Dez 2009 16:38

Re: Problem mit Erzeugen von Hash-Werten
 
Zitat:

Zitat von JBJHJM
P.S. Der Code von CreateHash() sollte in Ordung sein,

Wie ist den CreateHash definiert?

JBJHJM 20. Dez 2009 16:53

Re: Problem mit Erzeugen von Hash-Werten
 
Eventuell ist die Funktion doch nicht in Ordung, wenn ich am Ende der Nachricht noch eine Zeile zuweise, die mit einem Edit.text arbeitet, ändert sich das ergebnis aller Varianten, erstaunlicherweise auch die die vor der neuen Zeile liegen. Da kann ich mir im Moment überhaupt keinen Reim drauf machen.

function CreateHash(input: string): string benutzt das DCPcrypt Package, selber geschrieben, angelehnt an die Demofunktion des DCPcrypt Package.

Ich halte fest:
- Mit Dateien funktioniert die Funktion
- Mit Strings, die bereits festgelegt wurden, funktioniert die Funktion
- Mit Strings, die erst zur Laufzeit Inhalt bekommen haben - probiert mit
string:=label.caption und string:=edit.text - gibts jedes mal andere Werte, wenn sie neu zugewiesen werden
- Direkte eingabe [createHash(Edit.text)] gibt jedes mal unterschiedliche Ergebnisse.

Ich muss nochmal genau nachdenken, das zum Anfang genannte finde ich doch ziemlich merkwürdig bis mysteriös. Wie kann ein Befehl durch ein Befehl, der zeitlich eindeutig hinter ihm liegt, beeinflusst werden?! :gruebel:
´
Problem gelöst, wenn auch die herausgekommenen Fehler äußerst merkwürdig waren, lags an der prozedur, die den Input in einen Filestram schreibt. Neugeschrieben, jetzt ist alles soweit ok.

JBJHJM 20. Dez 2009 17:11

Re: Problem mit Erzeugen von Hash-Werten
 
Dann...

JBJHJM 20. Dez 2009 17:41

Re: Problem mit Erzeugen von Hash-Werten
 
...löschs doch bitte :mrgreen:

alzaimar 20. Dez 2009 18:28

Re: Problem mit Erzeugen von Hash-Werten
 
Solche Monologe sehen wir hier eigentlich nicht gerne. Dir steht es frei, deinen eigenen Beitrag zu editieren. Dazu dient der kleine Button rechts oberhalb deines Beitrages.

Auch wenn es schön ist, das Du dir selbst geholfen hast, wäre Dir möglich, der Bitte von Himitsu nach dem Code für 'CreateHash' nachzukommen?


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:56 Uhr.

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