Function 无法将样本函数拆分为两个单独的函数
我发现可以对字符串进行加密和解密,这是其文档中的示例代码。在示例中,他们在同一代码块中使用加密和解密,并生成名为Function 无法将样本函数拆分为两个单独的函数,function,vbscript,Function,Vbscript,我发现可以对字符串进行加密和解密,这是其文档中的示例代码。在示例中,他们在同一代码块中使用加密和解密,并生成名为bytOut的中介变量,该变量用于解密和加密 我想创建两个单独的函数,但我不知道如何在第二个函数中重用bytOut,因为它是在第一个函数中生成的: Function MyEncrypt(sPlain) sPassword = "key" lLength = Len(sPlain) ReDim bytIn(lLength-1) For lCount =
bytOut
的中介变量,该变量用于解密和加密
我想创建两个单独的函数,但我不知道如何在第二个函数中重用bytOut
,因为它是在第一个函数中生成的:
Function MyEncrypt(sPlain)
sPassword = "key"
lLength = Len(sPlain)
ReDim bytIn(lLength-1)
For lCount = 1 To lLength
bytIn(lCount-1) = CByte(AscB(Mid(sPlain, lCount, 1)))
Next
lLength = Len(sPassword)
ReDim bytPassword(lLength-1)
For lCount = 1 To lLength
bytPassword(lCount-1) = CByte(AscB(Mid(sPassword, lCount, 1)))
Next
bytOut = EncryptData(bytIn, bytPassword)
sTemp = ""
For lCount = 0 To UBound(bytOut)
sTemp = sTemp & Right("0" & Hex(bytOut(lCount)), 2)
Next
MyEncrypt = sTemp
End Function
Function MyDecrypt(sPlain)
sPassword = "key"
lLength = Len(sPassword)
ReDim bytPassword(lLength-1)
For lCount = 1 To lLength
bytPassword(lCount-1) = CByte(AscB(Mid(sPassword, lCount, 1)))
Next
'I don't know how to generate bytOut here?
bytClear = DecryptData(bytOut, bytPassword)
lLength = UBound(bytClear) + 1
sTemp = ""
For lCount = 0 To lLength - 1
sTemp = sTemp & Chr(bytClear(lCount))
Next
MyDecrypt = sTemp
End Function
这是样本的来源:
<%
sPlain="test"
sPassword="key"
lLength = Len(sPlain)
ReDim bytIn(lLength-1)
For lCount = 1 To lLength
bytIn(lCount-1) = CByte(AscB(Mid(sPlain, lCount, 1)))
Next
lLength = Len(sPassword)
ReDim bytPassword(lLength-1)
For lCount = 1 To lLength
bytPassword(lCount-1) = CByte(AscB(Mid(sPassword, lCount, 1)))
Next
'Here the bytOut is generated:
bytOut = EncryptData(bytIn, bytPassword)
sTemp = ""
For lCount = 0 To UBound(bytOut)
sTemp = sTemp & Right("0" & Hex(bytOut(lCount)), 2)
Next
Response.Write "Encrypted=" & sTemp & "<BR>"
'Here the bytOut is used again
bytClear = DecryptData(bytOut, bytPassword)
lLength = UBound(bytClear) + 1
sTemp = ""
For lCount = 0 To lLength - 1
sTemp = sTemp & Chr(bytClear(lCount))
Next
Response.Write "Decrypted=" & sTemp
%>
MyDecrypt
函数:
Function MyEncrypt(sPlain)
sPassword = "key"
lLength = Len(sPlain)
ReDim bytIn(lLength-1)
For lCount = 1 To lLength
bytIn(lCount-1) = CByte(AscB(Mid(sPlain, lCount, 1)))
Next
lLength = Len(sPassword)
ReDim bytPassword(lLength-1)
For lCount = 1 To lLength
bytPassword(lCount-1) = CByte(AscB(Mid(sPassword, lCount, 1)))
Next
bytOut = EncryptData(bytIn, bytPassword)
sTemp = ""
For lCount = 0 To UBound(bytOut)
sTemp = sTemp & Right("0" & Hex(bytOut(lCount)), 2)
Next
MyEncrypt = sTemp
End Function
Function MyDecrypt(sPlain)
sPassword = "key"
lLength = Len(sPassword)
ReDim bytPassword(lLength-1)
For lCount = 1 To lLength
bytPassword(lCount-1) = CByte(AscB(Mid(sPassword, lCount, 1)))
Next
'I don't know how to generate bytOut here?
bytClear = DecryptData(bytOut, bytPassword)
lLength = UBound(bytClear) + 1
sTemp = ""
For lCount = 0 To lLength - 1
sTemp = sTemp & Chr(bytClear(lCount))
Next
MyDecrypt = sTemp
End Function
您需要将十六进制字符串传递到函数
MyDecrypt()
,并将其转换回字节数组:
Function MyDecrypt(sCrypt)
sPassword = "key"
lLength = Len(sPassword)
ReDim bytPassword(lLength-1)
For lCount = 1 To lLength
bytPassword(lCount-1) = CByte(AscB(Mid(sPassword, lCount, 1)))
Next
bLength = Int((Len(sCrypt)+1) / 2) - 1
ReDim bytOut(bLength)
For i = 0 To bLength
bytOut(i) = CByte(Int("&h" & Mid(sCrypt, 2*i+1, 2)))
Next
bytClear = DecryptData(bytOut, bytPassword)
lLength = UBound(bytClear) + 1
sTemp = ""
For lCount = 0 To lLength - 1
sTemp = sTemp & Chr(bytClear(lCount))
Next
MyDecrypt = sTemp
End Function
函数MyDecrypt(sCrypt)
sPassword=“key”
L长度=长度(sPassword)
重拨字节密码(lLength-1)
对于lCount=1到lLength
字节密码(lCount-1)=CByte(AscB(Mid(sPassword,lCount,1)))
下一个
bLength=Int((Len(sCrypt)+1)/2)-1
ReDim bytOut(混合)
对于i=0至混合度
bytOut(i)=CByte(Int(“&h”和Mid(sCrypt,2*i+1,2)))
下一个
bytClear=解密数据(bytOut、bytPassword)
L长度=UBound(bytClear)+1
sTemp=“”
对于lCount=0到lLength-1
sTemp=sTemp&Chr(按列(lCount))
下一个
MyDecrypt=sTemp
结束功能
我还建议将密码/密钥作为参数传递给这两个函数,并将将将其转换为字节数组的部分重构为另一个函数,该函数可用于
MyEncrypt()
和MyDecrypt()
您需要将加密数据作为解密函数的参数传递。您还应该将密钥(在本例中为密码)作为这两个函数的参数MyEncrypt(明文,密钥)
->密文MyDecrypt(密文,密钥)
->明文。您的意思是bytClear=decrypteddata(EncryptedTextHere,myPassword)
?例如,我将测试
加密为93354DFA16DE9C40E4E64CDC1457AF903224D89EF0859A26507FF839E946DC0C
,但当我将其作为输入进行解密时,我会得到类型不匹配:“UBound”
。MyEncrypt()
返回一个十六进制字符串。您需要将其传递到MyDecrypt()
并将其转换回字节数组,然后再将其传递到DecryptData()
。基本上你需要在MyEncrypt()
中做最后一个循环的倒数。你能把它作为答案发布吗?