Seite 1 von 1

Proggy für On-The-Fly-Passwortverschlüsselung

Verfasst: 14.02.2005 16:14
von Bamsagla
Hallo Leute,
hab mal schnell ein kleines Prog gebastelt, weil ich öfters mal MD5-Passwortstrings oder auch mal einen Salt2 für meine htpasswd-geschützten Internetseiten brauch.
Das Teil schreibt die verschlüsselten Codes On-The-Fly, also während des Eintippens ins Programmfenster. Von dort kanns einfach per Markieren und Kopieren herausgenommen werden.
Als kleines Schmankerl hab ich mir auch noch eine Funktion aus der API gesucht, damit man das Passworteingabefeld umstellen kann von Klartext auf Verborgen und andersrum.
Apropos... weiss irgendjemand, warum mein Eingabefeld nach der Aufforderung Sendmessage_(GadgetID(x),#EM_SetPassWordChar,43,0) nicht automatisch aktualisiert wird? Ich musste einen Setfocus_(GadgetID(x)) setzen, damit das Teil passt...
Naja, ich hoffe irgendwer kanns brauchen. Getestet und lauffähig auf Version 3.92 mit aktuellen Libs.

Code: Alles auswählen

; Passwortverschlüsselung
Passwort$=""
Saltsalt$="HW"
If OpenWindow(100,0,0,400,310,#PB_Window_SystemMenu|#PB_Window_ScreenCentered,"Passwortverschlüsselung - Harry Wessner - 2005")
  If CreateGadgetList(WindowID(100))
    Frame3DGadget(100,10,10,380,50,"Bitte geben Sie Ihr Passwort ein")
    StringGadget(110,20,30,270,20,Passwort$)
    ButtonGadget(115,300,30,80,20,"Klartext")
    Frame3DGadget(120,10,70,380,50,"MD5-Fingerabdruck")
    StringGadget(130,20,90,360,20,MD5Fingerprint(Passwort$,Len(Passwort$)),#PB_String_ReadOnly)
    Frame3DGadget(140,10,130,380,80,"DES-Fingerabdruck")
    TextGadget(150,20,150,250,20,"Verwendeter Schlüssel:",512)
    StringGadget(160,280,150,100,20,Saltsalt$)
    StringGadget(170,20,180,360,20,DESFingerprint(Passwort$,Saltsalt$),#PB_String_ReadOnly)
    SendMessage_(GadgetID(160),#EM_LimitText,2,0)
    SendMessage_(GadgetID(110),#EM_SetPassWordChar,43,0)
  EndIf
  Repeat
    ; Wenn sich an den Eingabefeldern was tut, hier Aktualisieren
    Neuerpass$=GetGadgetText(110)
    Neuersalt$=GetGadgetText(160)
    If Neuersalt$<>Saltsalt$ Or Neuerpass$<>Passwort$
      Saltsalt$=Neuersalt$
      SetGadgetText(170,DESFingerprint(Neuerpass$,Neuersalt$))
    EndIf
    If Neuerpass$<>Passwort$
      Passwort$=Neuerpass$
      SetGadgetText(130,MD5Fingerprint(Passwort$,Len(Passwort$)))
    EndIf
    ; Ereignisverfolgung
    Select WindowEvent()
      Case #PB_Event_Gadget
        Select EventGadgetID()
          Case 115
            If GetGadgetText(115)="Klartext"
              SetGadgetText(115,"Verbergen")
              SendMessage_(GadgetID(110),#EM_SetPassWordChar,0,0)
              SetFocus_(GadgetID(110))
            ElseIf GetGadgetText(115)="Verbergen"
              SetGadgetText(115,"Klartext")
              SendMessage_(GadgetID(110),#EM_SetPassWordChar,43,0)
              SetFocus_(GadgetID(110))
            EndIf
        EndSelect
      Case #PB_Event_CloseWindow
        Ende=1
      Case 0
        Delay(1)
    EndSelect
  Until Ende=1
EndIf
Gruß Bamsagla

Verfasst: 15.02.2005 14:35
von glubschi90
Kleiner Tipp:

Bau' noch einen "Kopieren"-Button ein... - wäre sehr nützlich!

Korrigierter und erweiterter Code

Verfasst: 16.02.2005 12:20
von Bamsagla
Hallo Leute,
hab den Code bissl korrigiert (Fenstergröße etc.) und noch die Anregung von glubschi90 eingebaut.
An dieser Stelle danke für deinen Hinweis!

Code: Alles auswählen

; Passwortverschlüsselung
Passwort$=""
Saltsalt$="HW"
If OpenWindow(100,0,0,400,220,#PB_Window_SystemMenu|#PB_Window_ScreenCentered,"Passwortverschlüsselung - Harry Wessner - 2005")
  If CreateGadgetList(WindowID(100))
    Frame3DGadget(100,10,10,380,50,"Bitte geben Sie Ihr Passwort ein")
    StringGadget(110,20,30,270,20,Passwort$)
    ButtonGadget(115,300,30,80,20,"Klartext")
    Frame3DGadget(120,10,70,380,50,"MD5-Fingerabdruck")
    StringGadget(130,20,90,270,20,MD5Fingerprint(Passwort$,Len(Passwort$)),#PB_String_ReadOnly)
    ButtonGadget(135,300,90,80,20,"Kopieren")
    Frame3DGadget(140,10,130,380,80,"DES-Fingerabdruck")
    TextGadget(150,20,150,250,20,"Verwendeter Schlüssel:",512)
    StringGadget(160,300,150,80,20,Saltsalt$)
    StringGadget(170,20,180,270,20,DESFingerprint(Passwort$,Saltsalt$),#PB_String_ReadOnly)
    ButtonGadget(175,300,180,80,20,"Kopieren")
    SendMessage_(GadgetID(160),#EM_LimitText,2,0)
    SendMessage_(GadgetID(110),#EM_SetPassWordChar,43,0)
  EndIf
  Repeat
    ; Wenn sich an den Eingabefeldern was tut, hier Aktualisieren
    Neuerpass$=GetGadgetText(110)
    Neuersalt$=GetGadgetText(160)
    If Neuersalt$<>Saltsalt$ Or Neuerpass$<>Passwort$
      Saltsalt$=Neuersalt$
      SetGadgetText(170,DESFingerprint(Neuerpass$,Neuersalt$))
    EndIf
    If Neuerpass$<>Passwort$
      Passwort$=Neuerpass$
      SetGadgetText(130,MD5Fingerprint(Passwort$,Len(Passwort$)))
    EndIf
    ; Ereignisverfolgung
    Select WindowEvent()
      Case #PB_Event_Gadget
        Select EventGadgetID()
          Case 115
            If GetGadgetText(115)="Klartext"
              SetGadgetText(115,"Verbergen")
              SendMessage_(GadgetID(110),#EM_SetPassWordChar,0,0)
              SetFocus_(GadgetID(110))
            ElseIf GetGadgetText(115)="Verbergen"
              SetGadgetText(115,"Klartext")
              SendMessage_(GadgetID(110),#EM_SetPassWordChar,43,0)
              SetFocus_(GadgetID(110))
            EndIf
          Case 135
            SetClipboardText(GetGadgetText(130))
          Case 175
            SetClipboardText(GetGadgetText(170))
        EndSelect
      Case #PB_Event_CloseWindow
        Ende=1
      Case 0
        Delay(1)
    EndSelect
  Until Ende=1
EndIf

Verfasst: 16.02.2005 14:57
von glubschi90
Sieht doch schon viel besser aus! :)

Gutes kleines Tool! :allright: