Как декодировать строку в кодировке base64? - PullRequest
228 голосов
/ 21 августа 2011

Я пытаюсь "декодировать" эту следующую строку Base64:

OBFZDTcPCxlCKhdXCQ0kMQhKPh9uIgYIAQxALBtZAwUeOzcdcUEeW0dMO1kbPElWCV1ISFFKZ0kdWFlLAURPZhEFQVseXVtPOUUICVhMAzcfZ14AVEdIVVgfAUIBWVpOUlAeaUVMXFlKIy9rGUN0VF08Oz1POxFfTCcVFw1LMQNbBQYWAQ ==

Это то, что я знаю о самых строках:

1008 *

Первоначальная строка сначала передается через следующий код:

private static string m000493(string p0, string p1)
{
    StringBuilder builder = new StringBuilder(p0);
    StringBuilder builder2 = new StringBuilder(p1);
    StringBuilder builder3 = new StringBuilder(p0.Length);
    int num = 0;
Label_0084:
    while (num < builder.Length)
    {
        int num2 = 0;
        while (num2 < p1.Length)
        {
            if ((num == builder.Length) || (num2 == builder2.Length))
            {
                MessageBox.Show("EH?");
                goto Label_0084;
            }
            char ch = builder[num];
            char ch2 = builder2[num2];
            ch = (char)(ch ^ ch2);
            builder3.Append(ch);
            num2++;
            num++;
        }
    }
    return m0001cd(builder3.ToString());
}

Часть кода p1 в коде должна быть строкой "_p0lizei.".

Затем он преобразуется в строку Base64 с помощью следующего кода:

private static string m0001cd(string p0)
{
    string str2;
    try
    {
        byte[] buffer = new byte[p0.Length];
        str2 = Convert.ToBase64String(Encoding.UTF8.GetBytes(p0));
    }
    catch (Exception exception)
    {
        throw new Exception("Error in base64Encode" + exception.Message);
    }
    return str2;
}

Вопрос в том, как мне декодировать строку Base64 так,что я могу узнать, что такое оригинальная строка?

Ответы [ 2 ]

583 голосов
/ 21 августа 2011

Простой:

byte[] data = Convert.FromBase64String(encodedString);
string decodedString = Encoding.UTF8.GetString(data);
73 голосов
/ 21 августа 2011

Кажется, что метод m000493 выполняет какое-то шифрование XOR.Это означает, что один и тот же метод может использоваться как для шифрования, так и для дешифрования текста.Все, что вам нужно сделать, это перевернуть m0001cd:

string p0 = Encoding.UTF8.GetString(Convert.FromBase64String("OBFZDT..."));

string result = m000493(p0, "_p0lizei.");
//    result == "gaia^unplugged^Ta..."

с return m0001cd(builder3.ToString());, измененным на return builder3.ToString();.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...