Как мне декодировать строку в кодировке base64?


258

Я пытаюсь «расшифровать» следующую строку Base64:

OBFZDTcPCxlCKhdXCQ0kMQhKPh9uIgYIAQxALBtZAwUeOzcdcUEeW0dMO1kbPElWCV1ISFFKZ0kdWFlLAURPZhEFQVseXVtPOUUICVhMAzcfZ14AVEdIVVgfAUIBWVpOUlAeaUVMXFlKIy9rGUN0VF08Oz1POxFfTCcVFw1LMQNbBQYWAQ ==

Вот что я знаю о самой строке:

  1. Исходная строка сначала проходит через следующий код:

    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.».

  2. Затем он преобразуется в строку 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, чтобы я мог узнать, что такое оригинальная строка?


1
Я знаю, «почему» вообще не имеет значения при поддержке устаревших вещей, но мне нужно знать ... Почему исходная строка Base64 была закодирована в первую очередь?! ?? Base64 обычно используется для преобразования двоичного файла в переносимую текстовую версию для встраивания в XML или JSON - возможно, для перемещения по слою веб-службы, а не для преобразования строки в закодированную строку.
barrypicker

@ barry - чтобы ответить на ваш старый вопрос на еще более старом посте ... Я пришел сюда, потому что мне нужно разобраться с HTTP-заголовком авторизации, для которого требуется строка в кодировке base64
freefaller

Ответы:


646

Просто:

byte[] data = Convert.FromBase64String(encodedString);
string decodedString = Encoding.UTF8.GetString(data);

18
Чтобы завершить этот ответ, у Джерри Никсона есть отличный пост на эту тему.
Орад

4
и не забудьте добавить пространство имен 'using System.Text'
Eklavyaa

86

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();.


Спасибо, это был просто ответ, который я искал. Я был близок к тому, чтобы тянуть за волосы: р
Рикард,

48
@Rickard: Вы можете «принять» ответ, который решит вашу проблему, щелкнув галочку рядом с ответом слева.
ДТБ

3
Пожалуйста, не называйте это «шифрованием» или «дешифрованием». Сделайте акцент на различении «шифрования» и «кодирования».
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.