2016-07-05 11 views
-3
Function EncryptPassword(vPwd) 
    vTempPwd = "" 
    EncryptPassword = "" 
    For i = 1 To Len(vPwd) 
    vTempPwd = vTempPwd & Chr((255 - Asc(Mid(vPwd, i, i)))/2) 
    Next 
    For i = Len(vPwd) + 1 To 10 
    vTempPwd = vTempPwd & CStr(i - Len(vPwd)) 
    Next 
    EncryptPassword = vTempPwd 
End Function 

Ich habe für die oben Verschlüsselung Chiffre eine entschlüsseln entziffern Funktion zu schreiben, fragte. Irgendwelche Ideen?decrypt (dechiffrieren) Funktion für diese Verschlüsselung (Cipher)

+2

Haben Sie sich entschieden, den Rat zu ignorieren, den Sie vor ein paar Tagen erhalten haben? - dup von [welche Form der Verschlüsselung wird in dieser Asp-Funktion verwendet] (http://stackoverflow.com/q/38127127/692942). Ich habe es dann gesagt, und ich sage es jetzt, das ist keine Verschlüsselung im besten Fall ist die Substitution von Zeichen eine Form der Verschleierung und leicht zu brechen. Sie sollten dies nicht in ** jeder ** Webanwendung verwenden. – Lankymart

+3

@Lankymart: Mein Chef fordert mich auf, ständig blöde Sachen zu machen. Manchmal kann ich ihn vom Vorsprung abbringen; zu anderen Zeiten muss ich nur meinen Stolz schlucken und es auf seine Art tun - es ist seine Firma, nicht meine. Wenn du nicht im selben Boot bist, zähle deinen Segen, aber lass dich von denen von uns, die nicht so viel Glück haben. – Martha

+1

@Martha, der gebeten wird, dumme Sachen zu machen, ist eine Sache, wenn man verlangt, gefährliche Sachen zu machen, für die die Firma am Ende haftbar sein könnte, ist eine ganz andere Sache. Wenn sie diese Verschlüsselung als Verschlüsseln von Benutzerkennwörtern verwenden, was wird dann gesichert? Kundendetails, Zahlungsinformationen etc ... Tun Sie es einfach nicht und erklären Sie Ihrem Chef warum. Abgesehen davon ist eine Internet-Community, wo die Fragen/Antworten mehr als nur das OP profitieren, also würde ich lieber nicht Leute denken, dass dies Verschlüsselung ist, wenn es eindeutig nicht ist. – Lankymart

Antwort

1

Die folgende Funktion gibt Ihnen ein String-Passwort zurück, das, wenn es an die EncryptPassword-Funktion übergeben wird, mit der gleichen Chiffre-Zeichenfolge wie das ursprüngliche Passwort endet.

Function DecryptPassword(vPwd) 
    vTempPwd = "" 
    DecryptPassword = "" 
    For i = 1 To Len(vPwd) 
    vTempPwd = vTempPwd & Chr((255 - Asc(Mid(vPwd, i, 1)) * 2)) 
    Next 
    DecryptPassword = vTempPwd 
End Function 

Hinweis: Es wird unbedingt Sie nicht zurück geben genau die gleiche Zeichenfolge wie das Original-Passwort als jedes Zeichen zumindest eine „Kollision“ Charakter hat, das heißt, dass sie auf den gleichen Wert chiffrieren wird. Auch die EncryptPassword-Funktion wird es auf mindestens 10 Zeichen auffüllen, so dass Sie, wenn Ihr ursprüngliches Passwort kürzer ist, am Ende eine 10-stellige Zeichenfolge haben, die auf die gleiche Zeichenfolge verschlüsselt.

Unten ist die vollständige Skript, das ich mit dem Betrieb eines VBS-Datei cscript

pw1 = "password1234" 
pwC1 = EncryptPassword(pw1) 

pw2 = DecryptPassword(pwC1) 
pwC2 = EncryptPassword(pw2) 

If pwC1 = pwC2 Then 
    WScript.Echo pw1 & " and " & pw2 & " cipher to the same value off " & pwC1 
else 
    WScript.Echo pw1 & " chipher is " & pwC1 & " and " & pw2 & " cipher is " & pwC2 
End If 

Function EncryptPassword(vPwd) 
    vTempPwd = "" 
    EncryptPassword = "" 
    For i = 1 To Len(vPwd) 
    vTempPwd = vTempPwd & Chr((255 - Asc(Mid(vPwd, i, i)))/2) 
    Next 
    For i = Len(vPwd) + 1 To 10 
    vTempPwd = vTempPwd & CStr(i - Len(vPwd)) 
    Next 
    EncryptPassword = vTempPwd 
End Function 

Function DecryptPassword(vPwd) 
    vTempPwd = "" 
    DecryptPassword = "" 
    For i = 1 To Len(vPwd) 
    vTempPwd = vTempPwd & Chr((255 - Asc(Mid(vPwd, i, 1)) * 2)) 
    Next 
    DecryptPassword = vTempPwd 
End Function 

Beachten Sie, getestet: Wie in den Anmerkungen der Kommentare der ursprünglichen Frage Asc(Mid(vPwd, i, i)) auch Asc(Mid(vPwd, i, 1)) als Asc Funktion wurde gesagt sein kann analysiert nur das erste Zeichen trotzdem.