VBS实现文件逐字节异或
代码如下
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
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 Chr(txt1(j) XOR txt2(j))
j=j+1
next
set oArgs=Nothing