Passwort verschlüsseln
thomas (.:)
- asp.net
Hallo,
ich suche nach einer Möglichkeit, ein Passwort zu verschlüsseln, und es danach wieder zu entschlüsseln...
Ich habe auch schon etwas passendes gefunden:
Passwort = request.form("passwort")
For i = 1 to 5
TeilPwStr = mid(Passwort,i,1)
TeilPwstr = asc(TeilPwStr)
TeilPwStr = TeilPwStr + 12 + i
TeilPwStr = chr(TeilPwStr)
pwStrgver = pwStrgver & TeilPwStr
Next
response.write "<p>Passwort kodiert: "& pwStrgver &"</p>"
' Passwort gleich wieder entschlüsseln:
Passwort = pwStrgver
For i = 1 to 5
TeilPwStr = mid(Passwort,i,1)
TeilPwstr = asc(TeilPwStr)
TeilPwStr = TeilPwStr - 12 - i
TeilPwStr = chr(TeilPwStr)
pwStrgent = pwStrgent & TeilPwStr
Next
response.write "<p>Passwort dekodiert: "& pwStrgent &"</p>"
Nur leider bekomme ich nach dem Aufruf folgenden Fehler:
Ungültiger Prozeduraufruf oder ungültiges Argument: 'asc'
Was mache ich falsch? Danke.
Hi,
nun ja, Verschlüsselungsalgorithmen sind immer etwas trickreiches.
Für nur verschlüsseln empfehle ich MD5, den ich mittlerweile auch mal als VB-Code gefunden habe. So was gibts auch, musst dich mal durch ein Paar Downloadseiten wühlen. Was ich bei dir dort sehe scheint mir ein einfache Verschiebungsalgorithmus zu sein, der zumindest die ersten 5 Zeichen um 12 Ascii-Codes nach rechts verschiebt. Das könntest du übrigens mal zu
For i = 1 To Len(passwort)
ändern, dann würde er alle Zeichen verschlüsseln.
Ansonsten:
Gute Frage. Es könnte sein, dass er nicht ganz damit klar kommt bei einer Anweisung auf ein und der selben Variablen den Typ zu wechseln. Normalerweise kann man ja in VBScript ohne weiteres eine Stringvariable zu einer Zahl machen und umgekehrt, einfach indem man ihr einen entsprechenden Wert zuweist.
Probier mal statt
TeilPwstr = asc(TeilPwStr)
TeilPwStr = TeilPwStr + 12 + i
TeilPwStr = chr(TeilPwStr)
pwStrgver = pwStrgver & TeilPwStr
das hier:
chrcode = Asc(TeilPwStr)
chrcode = chrcode + 12 + i
TeilPwStr = chr(chrcode)
pwStrgver = pwStrgver + TeilPwStr
Leider bekomme ich immer noch den selben Fehler:
Ungültiger Prozeduraufruf oder ungültiges Argument: 'Asc'
Hm, das ist schlecht. Ich habe das hier gerade auf meinen IIS hochgeladen:
<html><body>
<%
Passwort = "HalloDuDa"
For i = 1 to 5
TeilPwStr = mid(Passwort,i,1)
TeilPwstr = asc(TeilPwStr)
TeilPwStr = TeilPwStr + 12 + i
TeilPwStr = chr(TeilPwStr)
pwStrgver = pwStrgver & TeilPwStr
Next
response.write "<p>Passwort kodiert: "& pwStrgver &"</p>"
' Passwort gleich wieder entschlüsseln:
Passwort = pwStrgver
For i = 1 to 5
TeilPwStr = mid(Passwort,i,1)
TeilPwstr = asc(TeilPwStr)
TeilPwStr = TeilPwStr - 12 - i
TeilPwStr = chr(TeilPwStr)
pwStrgent = pwStrgent & TeilPwStr
Next
response.write "<p>Passwort dekodiert: "& pwStrgent &"</p>"
%>
</body></html>
Ergebnis war:
Passwort kodiert: Uo{|
Passwort dekodiert: Hallo
Womit wir beim Thema wären: Kann es sein, dass dein Request überhaupt kein Passwort enthält, was länger oder gleich 5 Zeichen ist und er damit irgendwann mal den Ascii-Code von "" ermitteln will?
Wenn ich das Passwort auslese, mit Request.Form
dann steht aber eins drinnen :-) auch nur mit vier Zeichen...
Tja, dann ist dein Problem ja ganz einfach gelöst mit
For i = 1 To Len(Passwort).
Perfekt. Vielen, vielen Dank.
mfg thomas
Ich habs gerade auch so ausprobiert und siehe da, funktioniert...
Aber wenn ich Passwort = request.form("passwort") nehme, dann nicht mehr? Ich versteh die Welt nicht mehr.
Hast du vielleicht noch eine Idee?
Vielen Dank.
Hi, hallo
bitte nicht vergessen,
MD5 (Message Digest No. 5) ist eine "one-way encryption", weder symmetrisch, noch asymmetrisch, und damit nicht umkehrbar.
auf http://www.aspin.com wirst du nach einer weile fündig (suche nach MD5 bzw. RC4)
das sind ActiveX-Dlls, die registriert man und ruft sie via COM auf.
** für die Kleingeister, die wieder denken, ActiveX, ach wie unsicher: es handelt sich um gekapselte Module mit ActiveX Interface für den und nur auf dem Server **
haben den Vorteil sie bieten eben richtige Verschlüsselung, sind free (zumindest für persönliche Nutzung, weiteres bitte beim Autor erfragen) und sind leicht bedienbar.
Tschau, tschüß,
Frank