Seite 1 von 2
DESFingerprint bei gleichen anfangsbuchstaben gleich
Verfasst: 02.04.2007 18:51
von benji
hiho
schwer zu erklären, deshalb ist der titel auch nicht so gelungen.
Ich habe ein passwort mittels DESfingerprint in der string-variable "losung$" gespeichert.
Während der laufzeit wird die "losung$" mit einem in ein Stringgadget eingegebenen Text verglichen (text wird vorher auch mittels DES verschlüsselt)
Code: Alles auswählen
If Event = #PB_EventGadget
If GadgetID = #check
antwort$ = GetGadgetText(#antwort)
antw0rt$ = DESFingerprint("0qwert43@", antwort$)
losung$ = DESFingerprint("0qwert43@", "MANN")
If antw0rt$ = losung$
MessageRequester("OK", "richtiges PW",#MB_ICONINFORMATION )
Else
MessageRequester("sorry", "leider falsch.... ",#MB_ICONERROR)
EndIf
mein problem:
wenn man als antwort$ M oder MA (gefolgt von nichts oder egal welchen zeichen) eingibt, ist der DES-Code gleich. also muss man nicht das richtige passwort eingeben sondern es reichen M oder MA und dass darf nicht sein.
Benutze ich die funktion falsch?
wie sollte ich das lösen?
gruß
Verfasst: 02.04.2007 19:27
von hussi
mach es doch einfach so:
Code: Alles auswählen
antw0rt$ = DESFingerprint(antwort$, "0qwert43@")
losung$ = DESFingerprint("MANN", "0qwert43@")
;aus der Hilfe:
Debug DESFingerprint("Password", "Key007")
Debug DESFingerprint("NewPass", "Key007")
Verfasst: 02.04.2007 19:31
von benji
hussi hat geschrieben:mach es doch einfach so:
Code: Alles auswählen
antw0rt$ = DESFingerprint(antwort$, "0qwert43@")
losung$ = DESFingerprint("MANN", "0qwert43@")
;aus der Hilfe:
Debug DESFingerprint("Password", "Key007")
Debug DESFingerprint("NewPass", "Key007")
aber wie soll ich die beiden dann noch vergleichen?
bzw: das prob ist ja, dass ich im Programm selbst nur den String mit dem passenden wert angebe der Teil
existiert nicht, ich schreibe mir den entstandenen String auf und schreibe ihn direkt in die Variable:
verstehst du?
//EDIT//
das hilft im übrigen auch nicht, die DES-Strings sind gleich obwohl unterschiedliche "Schlüssel$" angegeben wurden
Verfasst: 02.04.2007 19:34
von hussi
Ok..
Also schau Dir nur das mit dem Debugger an:
Code: Alles auswählen
Debug DESFingerprint("Password", "Key007")
Debug DESFingerprint("NewPass", "Key007")
Du wirst feststellen das die Werte nicht gleich sind:
Ausgabe:
KeMDfQKVJMbYc
KeGMaBpfNusQ2
Verfasst: 02.04.2007 19:37
von benji

schau dir das an. das darf nicht sein
//EDIT//
es reicht, wenn ich nur PA eingebe und es kommt der gleiche string raus
Verfasst: 02.04.2007 19:45
von hussi
Code: Alles auswählen
crypt_passwort$ = DESFingerprint("meinpasswort","key")
OpenConsole()
Print("Gebe Dein Passwort ein : ")
eingabe$ = Input()
PrintN("")
If DESFingerprint(eingabe$,"key") = crypt_passwort$
PrintN ("Richtig")
Else
PrintN ("Falsch")
EndIf
PrintN("Druecken Sie Escape zum Beenden.")
Repeat
KeyPressed$ = Inkey()
Until KeyPressed$ = Chr(27) ; Wartet, bis Escape gedrückt wird
Ich hoffe, Dir kommt die Erleuchtung...
Verfasst: 02.04.2007 19:59
von benji
hussi hat geschrieben:Code: Alles auswählen
crypt_passwort$ = DESFingerprint("meinpasswort","key")
OpenConsole()
Print("Gebe Dein Passwort ein : ")
eingabe$ = Input()
PrintN("")
If DESFingerprint(eingabe$,"key") = crypt_passwort$
PrintN ("Richtig")
Else
PrintN ("Falsch")
EndIf
PrintN("Druecken Sie Escape zum Beenden.")
Repeat
KeyPressed$ = Inkey()
Until KeyPressed$ = Chr(27) ; Wartet, bis Escape gedrückt wird
Ich hoffe, Dir kommt die Erleuchtung...
nein, im grunde hast du genau das gemacht, was ich auch getan habe...
einziger unterschied: bei dir klappts bei mir nicht -_-
Verfasst: 02.04.2007 20:02
von hussi
Ich glaube, das wir irgendwie aneinander vorbei reden.
Was genau willst Du denn erreichen?
Übrigens: der "Key" also der zweite Teil von DESFingerprint nimmt immer nur die ersten zwei Zeichen vom String...
Verfasst: 02.04.2007 20:07
von benji
ich poste mal den code...
Code: Alles auswählen
IncludeFile "rätsel_common.pb"
ratsel$ = "Es passt zum Reim auf den Laut der Katze."
Open_Window_0()
SetGadgetText(#raetsel, ratsel$)
Repeat ; Start of the event loop
Event = WaitWindowEvent() ; This line waits until an event is received from Windows
WindowID = EventWindowID() ; The Window where the event is generated, can be used in the gadget procedures
GadgetID = EventGadgetID() ; Is it a gadget event?
EventType = EventType() ; The event type
;You can place code here, and use the result as parameters for the procedures
If Event = #PB_EventGadget
If GadgetID = #check
antwort$ = GetGadgetText(#antwort)
losung$ = "MA282owkqKcYo"
If DESFingerprint("reijin", antwort$) = losung$
MessageRequester("Geschafft!!!", "Sehr gut, du hast das Rätsel gelöst :) bis zum nächsten Rätsel - reijin",#MB_ICONINFORMATION )
Else
MessageRequester("sorry", "leider falsch.... ",#MB_ICONERROR)
EndIf
EndIf
EndIf
Until Event = #PB_Event_CloseWindow ; End of the event loop
End
es handelt sich bei losung$ = "MA282owkqKcYo" um das Wort "MANN" welches ich vorher mit DES verschlüsselt habe.
wenn man M oder MA als lösung eingibt, wird dies als korrekt eingestuft
warum?
Verfasst: 02.04.2007 20:34
von hussi
Ließt Du eigentlich was man Dir schreibt?
Übrigens: der "Key" also der zweite Teil von DESFingerprint nimmt immer nur die ersten zwei Zeichen vom String...
Code: Alles auswählen
If DESFingerprint("gleiches passwort","Ma") = DESFingerprint("gleiches passwort","Mann, ich habe es kapiert")
MessageRequester("?","jo")
Else
MessageRequester("?","nö")
EndIf
Nachtrag... (die hälfte vergessen)
Code: Alles auswählen
If DESFingerprint("gleiches passwort","Ma") = DESFingerprint("falsches passwort","Ma")
MessageRequester("?","jo")
Else
MessageRequester("?","nö")
EndIf
Beispiel 1 wir immer wahr sein... das zweit immer falsch...