Function RC4(ByRef pStrMessage, ByRef pStrKey)  Dim lBytAsciiAry(255)
  Dim lBytKeyAry(255)
  Dim lLngIndex
  Dim lBytJump
  Dim lBytTemp
  Dim lBytY
  Dim lLngT
  Dim lLngX
  Dim lLngKeyLength
    
  ' Validate data
  If Len(pStrKey) = 0 Then Exit Function
  If Len(pStrMessage) = 0 Then Exit Function  ' transfer repeated key to array
  lLngKeyLength = Len(pStrKey)
  For lLngIndex = 0 To 255
  lBytKeyAry(lLngIndex) = Asc(Mid(pStrKey, ((lLngIndex) Mod (lLngKeyLength)) + 1, 1))
  Next  ' Initialize S
  For lLngIndex = 0 To 255
  lBytAsciiAry(lLngIndex) = lLngIndex
  Next  ' Switch values of S arround based off of index and Key value
  lBytJump = 0
  For lLngIndex = 0 To 255
    
  ' Figure index to switch
  lBytJump = (lBytJump + lBytAsciiAry(lLngIndex) + lBytKeyAry(lLngIndex)) Mod 256
    
  ' Do the switch
  lBytTemp = lBytAsciiAry(lLngIndex)
  lBytAsciiAry(lLngIndex) = lBytAsciiAry(lBytJump)
  lBytAsciiAry(lBytJump) = lBytTemp
    
  Next    
  lLngIndex = 0
  lBytJump = 0
  For lLngX = 1 To Len(pStrMessage)
  lLngIndex = (lLngIndex + 1) Mod 256 ' wrap index
  lBytJump = (lBytJump + lBytAsciiAry(lLngIndex)) Mod 256 ' wrap J+S()
    
  ' Add/Wrap those two
  lLngT = (lBytAsciiAry(lLngIndex) + lBytAsciiAry(lBytJump)) Mod 256
    
  ' Switcheroo
  lBytTemp = lBytAsciiAry(lLngIndex)
  lBytAsciiAry(lLngIndex) = lBytAsciiAry(lBytJump)
  lBytAsciiAry(lBytJump) = lBytTemp  lBytY = lBytAsciiAry(lLngT)
    
  ' Character Encryption ...
  RC4 = RC4 & Chr(Asc(Mid(pStrMessage, lLngX, 1)) Xor lBytY)
  Next
    
End Function以上代码是一段RC4加密代码,可将任何字符串转换为加密字符串。经过本人和朋友ldy888测试发现在windows7下得到的结果和在WindowsXP下得到的结果不同。区别在于在XP下显示及结果中NULL字符(ASCII:00)在windows7下全变成了?(ASCII:3F)
经ldy888测试在其他Windows7系统下也有同样问题,而并非本人电脑的特例。
求教出现这种状况的原因以及解决方案,谢谢各位。