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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章