网站首页  汉语字词  英语词汇  考试资料  写作素材  旧版资料

请输入您要查询的考试资料:

 

标题 VBS 十六进制异或加密实现代码
内容
    文件不要过大,最好不要超过 100 KB,密钥不要用数字,不想改了。理论上支持任何二进制文件格式
    效果图:
    
1.jpg

    代码都封装成函数了,方便调用:
    代码如下:
    Key = "www-enun-net" '不要用数字
    Wscript.echo now & ", 加密: "
    MyData = ReadBin("test.jpg")
    EnData = Encoder(MyData)
    WriteBin "E_test.jpg", EnData
    Wscript.echo now & ", 加密: "
    Wscript.echo now & ", 解密: "
    MyData = ReadBin("E_test.jpg")
    UnData = Uncoder(MyData)
    WriteBin "U_test.jpg", UnData
    Wscript.echo now & ", 解密: "
    Function ReadBin(FileName)
    Dim Stream, ObjXML, MyNode
    Set ObjXML = CreateObject("Microsoft.XMLDOM")
    Set MyNode = ObjXML.CreateElement("binary")
    Set Stream = CreateObject("ADODB.Stream")
    MyNode.DataType = "bin.hex"
    Stream.Type = 1
    Stream.Open
    Stream.LoadFromFile FileName
    MyNode.NodeTypedValue = Stream.Read
    Stream.Close
    ReadBin = MyNode.Text
    Set MyNode = Nothing
    Set Stream = Nothing
    Set ObjXML = Nothing
    End Function
    Function WriteBin(FileName, BufferData)
    Dim Stream, ObjXML, MyNode
    Set ObjXML = CreateObject("Microsoft.XMLDOM")
    Set MyNode = ObjXML.CreateElement("binary")
    Set Stream = CreateObject("ADODB.Stream")
    MyNode.DataType = "bin.hex"
    MyNode.Text = BufferData
    Stream.Type = 1
    Stream.Open
    Stream.Write MyNode.NodeTypedValue
    Stream.SaveToFile FileName, 2
    Stream.Close
    Set stream = Nothing
    Set MyNode = Nothing
    Set ObjXML = Nothing
    End Function
    Function Encoder(Data)
    Dim K, M
    For n = 0 To Len(Key)-1
    K = K & Asc(Left(Right(key, Len(Key)-n), 1)) & "#"
    Next
    Data = UCase(Data)
    For i = 0 To Len(Data)-1
    M = Left(Right(Mid(Data, i+1, 1), Len(Data)-i), 1)
    For j = 0 To Len(Key)-1
    If i Mod Len(Key) = j Then
    Encoder = Encoder & Hex((Asc(M) Xor Split(K, "#")(j)))
    End If
    Next
    Next
    End Function
    Function Uncoder(Data)
    Dim K
    For n = 0 To Len(Key)-1
    K = K & "#" & Asc(Left(Right(key, Len(Key)-n), 1)) & "#X"
    Next
    K = K & K
    Data = UCase(Data)
    For i = 1 To Len(Data) Step 2
    For j = 1 To Len(Key) * 2
    If i Mod Len(Key)*2 = j Then
    Uncoder = Uncoder & Chr(Split(K, "#")(j) Xor ("&H" & Mid(Data, i, 2)))
    End If
    Next
    Next
    End Function
随便看

 

在线学习网考试资料包含高考、自考、专升本考试、人事考试、公务员考试、大学生村官考试、特岗教师招聘考试、事业单位招聘考试、企业人才招聘、银行招聘、教师招聘、农村信用社招聘、各类资格证书考试等各类考试资料。

 

Copyright © 2002-2024 cuapp.net All Rights Reserved
更新时间:2025/5/21 3:06:59