2016-07-05 112 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 

我被要求寫一個 解密 解碼功能,用於上述 加密 密碼。 任何想法?解密(解碼)該加密(加密)功能

+2

您是否選擇忽略前幾天給出的建議? - 在[asp函數中使用哪種形式的加密] dup(http://stackoverflow.com/q/38127127/692942)。我說過了,現在我會說它不是加密,它最好是字符替換,它是一種混淆形式,易於破壞。你不應該在**任何** web應用程序中使用它。 – Lankymart

+3

@Lankymart:我的老闆總是讓我做愚蠢的事情。有時候,我可以把他放在窗臺旁邊;其他時候,我只需要吞下我的驕傲,並按照他的方式行事 - 這是他的公司,不是我的。如果你不在同一條船上,請指望你的祝福,但是要解除那些不那麼幸運的我們。 – Martha

+1

@Martha被要求做愚蠢的東西是一回事,被要求做危險的事情,該公司可能最終承擔責任是另一回事。如果他們使用這個作爲窮人加密來加密用戶密碼,它保證什麼?客戶的詳細信息,付款信息等......只是不要這樣做,並向你的老闆解釋爲什麼。此外,這是一個互聯網社區,其中問題/答案更多地受益於OP,所以我不希望人們認爲這是加密,但顯然不是。 – Lankymart

回答

1

以下功能會給你會如果傳遞給EncryptPassword功能具有相同的加密字符串作爲原始密碼結束的字符串密碼改回。

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 

注:這並不一定會還給你一模一樣的字符串作爲原始密碼爲每個角色都有至少一個「撞」字,那就是他們將加密法相同的值。此外,加密密碼功能會將其填充至少10個字符,所以如果您的原始密碼較短,您最終將得到一個10個字符的字符串,並將其加密爲相同的字符串。

下面是我使用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 

注意運行.vbs文件測試的完整的腳本:由於是在原來問題的意見的筆記說Asc(Mid(vPwd, i, i))也可以作爲Asc(Mid(vPwd, i, 1)) ASC的功能無論如何只解析第一個字符。