win32crypt

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Benutzeravatar
Baconman
User
Beiträge: 20
Registriert: Mittwoch 24. März 2010, 22:42
Kontaktdaten:

Ich habe folgenden Codeschnipsel aus dem Internet:

Code: Alles auswählen

1. import win32crypt
2.
3. pwdHashStr=""
4. pwdHash = win32crypt.CryptProtectData("PASSWORD",'psw',None,None,None,0)
5. for char in pwdHash:
6.     pwdHashStr+= "%02X" % ord(char)
7. 
8. print "\nPWD Hash:",pwdHashStr
9. 
10.print "\nUncrypt:"
11.print win32crypt.CryptUnprotectData(pwdHash,None,None,None,0)
Eigentlich ist alles, bis auf Zeile 6, klar. Was genau macht er da? Am besten wäre es wenn mir einer die Bedeutung jedes einzelnen Zeichens erklären könnte.

Was für einen Typ hat pwdHash, bevor es umgewandelt wird? Wenn ich nämlich

Code: Alles auswählen

print win32crypt.CryptProtectData("PASSWORD",'psw',None,None,None,0)
eingebe bekomme ich ein Leerzeichen als Ausgabe.

Da drängt sich mir eigentlich auch noch die Frage auf, wie ich einen HashStr wieder zurück umwandeln kann. Zeile 6 quasi, nur in die andere Richtung.

Freue mich auf die Antworten :D
BlackJack

Welchen Typ ein Objekt hat, kannst Du mit `type()` und ``print`` herausfinden. Was in der Schleife passiert im Grunde auch.

Es ist eine umständliche Art "[632]" zu schreiben:

Code: Alles auswählen

In [631]: 'abcXYZ-42'.encode('hex')
Out[631]: '61626358595a2d3432'

In [632]: 'abcXYZ-42'.encode('hex').upper()
Out[632]: '61626358595A2D3432'

In [633]: 'abcXYZ-42'.encode('hex').upper().decode('hex')
Out[633]: 'abcXYZ-42'
Antworten