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...