2016-07-05 109 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的功能无论如何只解析第一个字符。