Ein Zeichenkette verschlüsseln

Stelle Fragen zur Programmierung mit Autohotkey

Moderator: jNizM

KHA
Posts: 403
Joined: 21 Aug 2018, 11:11

Ein Zeichenkette verschlüsseln

10 Oct 2018, 09:41

Hallo,

wie kann ich ein Passwort verschlüsseln?

Habe das hier von nnnik gefunden.

https://autohotkey.com/board/topic/9143 ... -by-nnnik/

habe die Datei heruntergeladen und als pv.ahk gespeichert und anschließend in mein Script gebunden. Verschlüsselung klappt, bekomme ein Hash angezeigt.
Weiß aber nicht wie ich es wieder Entschlüsseln und anschließend Abfragen kann?

Code: Select all

#Include pv.ahk
/*
erg = Geheimer Text
Result:=StrEncrypt(erg, Pass="wasser", Quality=1)
msgbox, % Result
*/

erg:=StrDecrypt(243946C74766BE0B1428172163330334654F8E8D0000, Pass=%Passvar%

InputBox, Passvar, Passwort, Gibt bitte das Passwort ein, hide 
if Passvar = erg
msgbox, Passwort ist richtig.
Else
msgbox, Passwort falsch


Gruß
User avatar
Gucky_87
Posts: 375
Joined: 03 Jul 2014, 05:09

Re: Ein Zeichenkette verschlüsseln

12 Oct 2018, 07:58

An sich musst Du das PW gar selbst verschlüssen und speichern. Speichere den Hash.

Also so etwa...

- Du gibst ein PW ein, verschüsselst es mit der Routine und speicherst den Hashwert (z.B. in einer INI)
So wird aus dem PW "Hans" dann etwa "03FE90A900FABC121300FA"

- Der User gibt sein PW ein
- Dieses verschlüsselst Du ebenfalls
Aus Eingabe "Haus" wird also wieder "03FE90A900FABC121300FA"
Aus einer falschen Eingabe (z.B. "Klaus" würde aber etwa "11FF08332190BFAD13DF90")

- Dann musst Du nur noch beide Hashwerte vergleichen ;)

Vorteil:
Recht sicher, da das PW nirgendwo an sich gespeichert wird.

Nachteil:
Eine Rekonstruktion ist aus den Hashwerten nicht immer unbedingt möglich.

Gucky.
KHA
Posts: 403
Joined: 21 Aug 2018, 11:11

Re: Ein Zeichenkette verschlüsseln

12 Oct 2018, 15:16

meinst du das so:?

lv.ini

Code: Select all

[pass]
mypass=23469C6592FA3C3786D01F590000

Code: Select all

#Include pv.ahk

IniRead, gps, lv.ini, pass, mypass
InputBox, passvar, Passwort, Gibt bitte das Passwort ein, hide
ents := StrDecrypt(gps,Pass="")
if (passvar = ents)
msgbox, korrekt!
else
msgbox, falsch

Was ich nicht verstehe,
- Der User gibt sein PW ein
- Dieses verschlüsselst Du ebenfalls
Dann musst Du nur noch beide Hashwerte vergleichen
die Funktion von @nnnik gibt jedesmal eine andere Hashwert zurück, so wird aus Haus das erste mal: 30B98A36DCC57364C8F770000000 und beim zweiten mal 28F758AAACC530BFE800F3640000
somit ist ein Hashwert vergleich doch gar nicht möglich.

LG
KHA
Posts: 403
Joined: 21 Aug 2018, 11:11

Re: Ein Zeichenkette verschlüsseln

13 Oct 2018, 05:47

Wenn ich das so mache, ist dann mein Passwort sicher ?

Code: Select all

myStr = 0babab16fabc4cf5ecf2f68d54ef6cfc
InputBox, passvar, Passwort, Gibt bitte das Passwort ein, hide
mypasv := MD5(passvar)
if (mypasv = myStr)
msgBox, korrekt!
Else
msgBox, Pech gehabt
MD5(string, case := False)    ; by SKAN | rewritten by jNizM
{
    static MD5_DIGEST_LENGTH := 16
    hModule := DllCall("LoadLibrary", "Str", "advapi32.dll", "Ptr")
    , VarSetCapacity(MD5_CTX, 104, 0), DllCall("advapi32\MD5Init", "Ptr", &MD5_CTX)
    , DllCall("advapi32\MD5Update", "Ptr", &MD5_CTX, "AStr", string, "UInt", StrLen(string))
    , DllCall("advapi32\MD5Final", "Ptr", &MD5_CTX)
    loop % MD5_DIGEST_LENGTH
        o .= Format("{:02" (case ? "X" : "x") "}", NumGet(MD5_CTX, 87 + A_Index, "UChar"))
    return o, DllCall("FreeLibrary", "Ptr", hModule)
}
just me
Posts: 9442
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Ein Zeichenkette verschlüsseln

13 Oct 2018, 07:20

Moin,

für den Hausgebrauch sollte MD5 noch reichen, auch wenn es schon seit längerer Zeit nicht mehr als sicher gilt. Im professionellen Umfeld wäre SHA-2 (SHA256, SHA384, SHA512) vorzuziehen.
User avatar
Gucky_87
Posts: 375
Joined: 03 Jul 2014, 05:09

Re: Ein Zeichenkette verschlüsseln

15 Oct 2018, 07:09

Genau das mit dem MD5 Hash meinte ich.
Ich habe die Funktion von nnnik bisher nicht ausprobiert, daher ging ich auch davon aus, dass er einen Hash bildet, der vllt. sicherer als MD5 ist.
Wenn natürlich jedesmal andere Hashwerte erzeugt werden, klappt das mit dem Vergleich nicht, logisch.

Gucky.
User avatar
nnnik
Posts: 4500
Joined: 30 Sep 2013, 01:01
Location: Germany

Re: Ein Zeichenkette verschlüsseln

15 Oct 2018, 07:59

Die Funktion verschlüsselt Text - sie bildet keinerlei hash.
Ich bin davon ausgegangen, dass er einen Passwortmanager erzeugen will.
Recommends AHK Studio
User avatar
Gucky_87
Posts: 375
Joined: 03 Jul 2014, 05:09

Re: Ein Zeichenkette verschlüsseln

15 Oct 2018, 08:33

Alles klar.
Ich denk, ich sollte mir das mal anschauen. Das klingt gut.

Gucky.
KHA
Posts: 403
Joined: 21 Aug 2018, 11:11

Re: Ein Zeichenkette verschlüsseln

15 Oct 2018, 11:43

Die Funktion von nnnik ist geeignet, wenn ich mich mit AHK z.B. bei Forum anmelden möchte, mein Passwort wird verschlüsselt und beim Einloggen entschlüsselt. Weil man sich ja mit einer Hash nicht anmelden kann.

Liege ich soweit richtig?
User avatar
nnnik
Posts: 4500
Joined: 30 Sep 2013, 01:01
Location: Germany

Re: Ein Zeichenkette verschlüsseln

15 Oct 2018, 11:54

Es wird nicht automatisch verschlüsselt.
Meine Funktion verschlüsselt text. Wenn du das Original wieder haben möchtest musst du mit dem selben Passwort die entschlüsseln Funktion aufrufen.
Recommends AHK Studio

Return to “Ich brauche Hilfe”

Who is online

Users browsing this forum: No registered users and 8 guests