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

Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
Benutzeravatar
Bamsagla
Beiträge: 33
Registriert: 03.12.2004 14:49
Wohnort: Laufen

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

Beitrag 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
Service Packs sind dazu da, die Fehler zu verbessern, die vorher nicht richtig funktioniert haben!
Bild
glubschi90
Beiträge: 274
Registriert: 04.09.2004 01:43
Wohnort: Würzburg

Beitrag von glubschi90 »

Kleiner Tipp:

Bau' noch einen "Kopieren"-Button ein... - wäre sehr nützlich!
PureBasic 4.30
Benutzeravatar
Bamsagla
Beiträge: 33
Registriert: 03.12.2004 14:49
Wohnort: Laufen

Korrigierter und erweiterter Code

Beitrag 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
Service Packs sind dazu da, die Fehler zu verbessern, die vorher nicht richtig funktioniert haben!
Bild
glubschi90
Beiträge: 274
Registriert: 04.09.2004 01:43
Wohnort: Würzburg

Beitrag von glubschi90 »

Sieht doch schon viel besser aus! :)

Gutes kleines Tool! :allright:
PureBasic 4.30
Antworten