我可以帮忙解决这个问题吗?因为我很困惑。我复制粘贴了一个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#很新,这是我的第一个真正的项目。
答案 0 :(得分:0)
你从哪里得到8a33b8a537d4e17ec4ac7041df43d892821c16dc15cf84fb33a672ab76c72119126f9c4849cf55423b0112c4b4
?
使用指定键'3'在解码器中运行它会产生:
; 0ab0gf4
b47g7g:;22g2
; {e0b4b4 {1}} 67032`a
显然没有像有效的URI那样。我已经尝试了几个快速的事情,看看我是否可以得到一些明智的东西(比如将值从十六进制转换为字节)但是没有任何合理的东西出现。
如果你是C#的新手,这是你的第一个真正的项目,你应该把它分解成更简单的部分。确保您可以使用任何字符串,使用1225:77
对其进行编码,然后对结果进行解码以获得相同的值。然后,保留加密并确保您可以从您的站点下载任何普通文件。当你同时工作(并理解它们如何工作,更重要的是,当它们失败时的行为)将两者结合起来。