使用XOR下载链接加密

时间:2012-03-17 05:49:20

标签: c# uri xor

我可以帮忙解决这个问题吗?因为我很困惑。我复制粘贴了一个XOR加密类,并且我将下载链接加密到我的网站上托管的Minecraft Mod Installer .exe。但是,当我编写以下代码时,我总是遇到错误,因为文本输入不是正确的Uri。有没有办法让这项工作成功? SSCCE低于

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Diagnostics;
using System.IO;
using System.Net;

    private void startButton_Click(object sender, EventArgs e)
    {
        startButton.Enabled = false;
        WebClient client = new WebClient();
        client.DownloadProgressChanged += new DownloadProgressChangedEventHandler(client_DownloadProgressChanged);
        client.DownloadDataCompleted += new DownloadDataCompletedEventHandler(client_DownloadDataCompleted);
        client.DownloadDataAsync(new Uri(EncryptorDecryptor.EncryptDecrypt("8a33b8a537d4e17ec4ac7041df43d892821c16dc15cf84fb33a672ab76c72119126f9c4849cf55423b0112c4b4")), Path.GetTempPath() + "mcmodinstaller.exe");
    }

    void client_DownloadDataCompleted(object sender, DownloadDataCompletedEventArgs e)
    {
        MessageBox.Show("Successful!",
        "Download",
        MessageBoxButtons.OK,
        MessageBoxIcon.Information);

        Process.Start(Path.GetTempPath() + "mcmodinstaller.exe");
        startButton.Enabled = true;
    }
            void client_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e)
    {
        downloadBar.Maximum = (int)e.TotalBytesToReceive / 100;
        downloadBar.Value = (int)e.BytesReceived / 100;
    }
    public static class EncryptorDecryptor
    {
        public static int key = 3;

        public static string EncryptDecrypt(string textToEncrypt)
        {
            StringBuilder inSb = new StringBuilder(textToEncrypt);
            StringBuilder outSb = new StringBuilder(textToEncrypt.Length);
            char c;
            for (int i = 0; i < textToEncrypt.Length; i++)
            {
                c = inSb[i];
                c = (char)(c ^ key);
                outSb.Append(c);
            }
            return outSb.ToString();
        }
    }
    }

先谢谢,我对C#很新,这是我的第一个真正的项目。

1 个答案:

答案 0 :(得分:0)

你从哪里得到8a33b8a537d4e17ec4ac7041df43d892821c16dc15cf84fb33a672ab76c72119126f9c4849cf55423b0112c4b4

使用指定键'3'在解码器中运行它会产生:

  

; 0ab0gf4 b47g7g:;22g2; {e0b4b4 {1}} 67032`a

显然没有像有效的URI那样。我已经尝试了几个快速的事情,看看我是否可以得到一些明智的东西(比如将值从十六进制转换为字节)但是没有任何合理的东西出现。

如果你是C#的新手,这是你的第一个真正的项目,你应该把它分解成更简单的部分。确保您可以使用任何字符串,使用1225:77对其进行编码,然后对结果进行解码以获得相同的值。然后,保留加密并确保您可以从您的站点下载任何普通文件。当你同时工作(并理解它们如何工作,更重要的是,当它们失败时的行为)将两者结合起来。