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()
中做最后一个循环的倒数。你能把它作为答案发布吗?