使用XOR下载链接加密
本文关键字:加密 链接 下载 XOR 使用 | 更新日期: 2023-09-27 18:28:01
我能得到一些帮助吗?因为我很困惑。我复制粘贴了一个XOR加密类,并对我的网站上托管的Minecraft Mod Installer.exe的下载链接进行了XOR加密。然而,当我编写以下代码时,我总是遇到错误,因为文本输入不是正确的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#的新手,这是我的第一个真正的项目。
您从哪里获得8a33b8a537d4e17ec4ac7041df43d892821c16dc15cf84fb33a672ab76c72119126f9c4849cf55423b0112c4b4
?
用指定的密钥"3"通过解码器运行它给出:
0ab0gf4
b47g7g:;22g2
;e0b4b41225:77
67032 `a
显然,没有什么比得上有效的URI。我已经尝试了一些快速的方法,看看是否可以得到一些合理的结果(比如将值从十六进制转换为字节),但没有出现任何合理的结果。
如果你是C#的新手,并且这是你的第一个真正的项目,你应该把它分解成更容易的部分。确保您可以获取任何字符串,用EncryptorDecryptor
对其进行编码,然后对结果进行解码以获得相同的值。然后,抛开加密,确保你可以从你的网站下载任何正常的文件。当你同时工作时(了解它们是如何工作的,更重要的是,了解它们失败时的行为),将两者结合起来。