VBS实现文件逐字节异或

VBS实现文件逐字节异或

代码如下

'来源:http://blog.csdn.net/markinlqx/article/details/18987039
'数组转字符串函数 Convert array to string  
'Writer         Markin.Q.Li  
'Create Date    2013-4-28  
'arrayName      arrayName  
'separator      separator  
'Example        ConvertArrayToString(arrayName, ",")  
Public Function ConvertArrayToString(arrayName, separator)  
   Dim elementString  

    For Each element In arrayName  
        elementString = elementString + Cstr(element) + separator  
    Next  

    elementString = StrReverse(elementString)  
    elementString = Replace(elementString, separator,"",1,1)  
    elementString = StrReverse(elementString)  

    ConvertArrayToString = elementString  
End Function

'来源:http://demon.tw/programming/vbs-binary-file.html
'VBS读写二进制文件函数
Function ReadBinary(FileName)
  Dim Buf(), I
  With CreateObject("ADODB.Stream")
    .Mode = 3: .Type = 1: .Open: .LoadFromFile FileName
    ReDim Buf(.Size - 1)
    For I = 0 To .Size - 1: Buf(I) = AscB(.Read(1)): Next
    .Close
  End With
  ReadBinary = Buf
End Function

Sub WriteBinary(FileName, Buf)
  Dim I, aBuf, Size, bStream
  Size = UBound(Buf): ReDim aBuf(Size \ 2)
  For I = 0 To Size - 1 Step 2
      aBuf(I \ 2) = ChrW(Buf(I + 1) * 256 + Buf(I))
  Next
  If I = Size Then aBuf(I \ 2) = ChrW(Buf(I))
  aBuf=Join(aBuf, "")
  Set bStream = CreateObject("ADODB.Stream")
  bStream.Type = 1: bStream.Open
  With CreateObject("ADODB.Stream")
    .Type = 2 : .Open: .WriteText aBuf
    .Position = 2: .CopyTo bStream: .Close
  End With
  bStream.SaveToFile FileName, 2: bStream.Close
  Set bStream = Nothing
End Sub
''''''''''''''''''''''''''''''''''''''''''''''''''''''''

set oArgs=wscript.arguments
dim file1,file2
file1=oArgs(0)
file2=oArgs(1)

txt1=ReadBinary(file1)
txt2=ReadBinary(file2)

j=0
for each i in txt1
    'WScript.echo Cstr(txt1(j) XOR txt2(j))
    WScript.echo Chr(txt1(j) XOR txt2(j))
    j=j+1
next

'WScript.echo ConvertArrayToString(txt1,",")

set oArgs=Nothing

猜你喜欢

转载自blog.csdn.net/tomggx/article/details/50899501
vbs