Vbscript 此加密(密码)的解密(解密)函数
我被要求为上述加密编写一个解密函数。Vbscript 此加密(密码)的解密(解密)函数,vbscript,asp-classic,Vbscript,Asp Classic,我被要求为上述加密编写一个解密函数。 有什么想法吗?以下函数将返回一个字符串密码,如果传递给EncryptPassword函数,该密码将以与原始密码相同的密码字符串结束 Function EncryptPassword(vPwd) vTempPwd = "" EncryptPassword = "" For i = 1 To Len(vPwd) vTempPwd = vTempPwd & Chr((255 - Asc(Mid(vPwd, i, i))) / 2)
有什么想法吗?以下函数将返回一个字符串密码,如果传递给EncryptPassword函数,该密码将以与原始密码相同的密码字符串结束
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
注意:它不一定会返回与原始密码完全相同的字符串,因为每个字符至少有一个“冲突”字符,即它们将加密为相同的值。此外,EncryptPassword函数会将其填充到至少10个字符,因此如果原始密码较短,则最终将得到一个10个字符的字符串,该字符串将加密为相同的字符串
下面是我使用cscript运行.vbs文件测试的完整脚本
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
注意:正如原始问题注释中所述,
Asc(Mid(vPwd,i,i))
也可以是Asc(Mid(vPwd,i,1))
,因为Asc函数只解析第一个字符。您是否选择忽略几天前给出的建议?-愚弄。我当时说了,现在也说了,充其量也不是加密,而是字符替换,一种模糊的形式,很容易被破解。你不应该在任何web应用程序中使用它。@Lankymart:我的老板让我一直做傻事。有时候,我可以说服他离开窗台;其他时候,我只能忍气吞声,按照他的方式去做——这是他的公司,不是我的公司。如果你不在同一条船上,算一算你的福气,但是解雇我们中那些不那么幸运的人。@Martha被要求做愚蠢的事情是一回事,被要求做公司可能最终要承担责任的危险的事情是另一回事。如果他们将此用作穷人加密来加密用户密码,那么它的安全性是什么?客户详细信息、付款信息等……不要这样做,并向老板解释原因。此外,这是一个互联网社区,问题/答案的好处不仅仅是OP,所以我宁愿不让人们认为这是加密,显然它不是。“玛莎,我的老板仍然希望我在经典ASP上工作,我从不认为自己是幸运的。有很多冲突(字符被编码到同一个字符)。在EncryptPassword功能中,您可以编写一个函数,为您提供一个字符串,该字符串将“加密”到同一个EncryptPassword,您不能确定您拥有原始的vPwd
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