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