Скачать ссылку шифрования с помощью XOR - PullRequest
0 голосов
/ 17 марта 2012

Могу ли я получить помощь?Как я очень запутался.Я скопировал и вставил класс шифрования 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 голосов
/ 17 марта 2012

Откуда вы взяли 8a33b8a537d4e17ec4ac7041df43d892821c16dc15cf84fb33a672ab76c72119126f9c4849cf55423b0112c4b4 от?

Запуск его через декодер с указанным ключом '3' дает:

; 0ab0gf4 b47g7g:;22g2; e0b4b4 1225:77 67032`a

Очевидно, что ничего похожего на действительный URI. Я попробовал несколько быстрых вещей, чтобы увидеть, смогу ли я получить что-то разумное (например, преобразование значения из шестнадцатеричного значения в байты), но ничего разумного не появляется.

Если вы новичок в C # и это ваш первый настоящий проект, вы должны разбить его на гораздо более простые части. Убедитесь, что вы можете взять любую строку, закодировать ее с помощью EncryptorDecryptor, а затем декодировать результат, чтобы получить то же значение. Затем отложите шифрование и убедитесь, что вы можете загрузить любой обычный файл с вашего сайта. Когда вы оба работаете (и понимаете, как они работают и, что более важно, как они ведут себя , когда они терпят неудачу ), объединяйте их.

...