解码函数并获取Microsoft VBScript运行时错误“800a000d”

时间:2015-06-02 10:29:52

标签: vbscript asp-classic

我有代码

Function DeCrypt(strName)
  if strName <> ""  then   
    g_KeyLocation = "m:\mysvr_src\mycart_svr.txt"
    'g_Key = mid(ReadKeyFromFile(g_KeyLocation),1,Len(strName))
    g_Key="gsovjrcenzhqjxigkhuhkfmabwxuzsuexvypfohbkmhdilihfbvhgfzccckvafoazynbhyeexinfwmeaesjzhwtqyaaybvghxwyfmewamhqwygaaqcbjklyeblidcvapajwdumodndhdkaauzxqnohrgvezmznbmtfyuadkbjrdbedjwsarlqpejrzszqdlkngwfdlphnswqewdtedwensocyqcryzkxtegmarfkiycyhloatbwtcxyzdyvpwjcovvtqodlxegmzletfxpiejlomorotgnpxeybqsclioisuoixvanwndpnerpyfaudkdivpjukeualkmgdkmpfvjszpxmqzcjwrfurmkolbibhvedqlsqzbyzdhqdicjqxesbhjtrskogydnhnndjviusctgipptulmdyhfhkkvxkajkazedplpuganevendeqcvgjeyaqvugfmupexcdlyvucdumrwmapofseeqvpyopfonhfgmsmjxrmdoztsqqnk"
    count = 1
    while InStr(strname,"_")
      iKeyChar = (Asc(mid(g_Key,count,1)))
      strName = Mid(strName,2,len(strName)-1) 
      if InStr(strName,"_")-1 = -1 then 
        iStringChar = strName
      else
        iStringChar = Mid(strName,1,InStr(strName,"_")-1)
      end if 
      iDeCryptChar = iKeyChar Xor iStringChar
      strDecrypted = strDecrypted & Chr(iDeCryptChar) 
      strName = Right(strName,len(strName)-instr(strName,"_")+1)
      count = count + 1
    wend
    deCrypt = strDecrypted 
  else
    deCrypt = ""
  end if
End Function

我得到了一些正确的结果,然后停下来告诉我这个错误:

  

Microsoft VBScript运行时错误'800a000d'
  类型不匹配:'iStringChar'

错误在这一行:

iDeCryptChar = iKeyChar Xor iStringChar

1 个答案:

答案 0 :(得分:1)

错误实际上是不言自明的。您不能使用字符串对整数进行异或。当然,你会遇到类型不匹配的问题。

改变这个:

if InStr(strName,"_")-1 = -1 then 
  iStringChar = strName
else
  iStringChar = Mid(strName,1,InStr(strName,"_")-1)
end if 

进入这个:

if InStr(strName,"_")-1 = -1 then
  iStringChar = Asc(strName)
else
  iStringChar = Asc(Mid(strName,1,InStr(strName,"_")-1))
end if
相关问题