353 Stimmen

Wie dekodiere ich eine Base64-codierte Zeichenfolge?

Ich versuche, folgenden Base64-String "zu entschlüsseln":

OBFZDTcPCxlCKhdXCQ0kMQhKPh9uIgYIAQxALBtZAwUeOzcdcUEeW0dMO1kbPElWCV1ISFFKZ0kdWFlLAURPZhEFQVseXVtPOUUICVhMAzcfN14AVEdIVVgfAUIBWVpOUlAeaUVMXFlKIy9rYUN0VF08Oz1POxFfTCcVFw1LMQNbBQYWAQ==

Das weiß ich über den String selbst:

  1. Der originale String wird zunächst durch folgenden Code geleitet:

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

    Der Teil p1 im Code soll der String "_p0lizei." sein.

  2. Dann wird er durch folgenden Code in einen Base64-String umgewandelt:

    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("Fehler beim Base64-Kodieren" + exception.Message);
        }
        return str2;
    }

Die Frage ist, wie ich den Base64-String "entschlüsseln" kann, um herauszufinden, was der originale String ist.

3 Stimmen

Ich weiß, dass "Warum" im Allgemeinen irrelevant ist, wenn es darum geht, Legacy-Systeme zu unterstützen, aber ich muss wissen ... Warum wurde der ursprüngliche String überhaupt Base64-codiert ?!?! Base64 wird normalerweise verwendet, um Binärdaten in eine textbasierte portable Version zu konvertieren, die in XML oder JSON eingebettet werden kann - möglicherweise zur Übertragung über eine Webservice-Schicht, nicht zum Konvertieren von Zeichenfolgen in codierte Zeichenfolgen.

1 Stimmen

@barry - Um deine alte Frage zu einem noch älteren Beitrag zu beantworten ... Ich bin hierher gekommen, weil ich mich mit dem HTTP-Autorisierungsheader beschäftigen muss, der eine base64-codierte Zeichenfolge erfordert.

901voto

Matthew Abbott Punkte 58885

Einfach:

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

112voto

dtb Punkte 205441

Die Methode m000493 scheint eine Art XOR-Verschlüsselung durchzuführen. Das bedeutet, dass die gleiche Methode sowohl zum Codieren als auch zum Decodieren des Textes verwendet werden kann. Alles, was Sie tun müssen, ist m0001cd umzukehren:

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

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

mit return m0001cd(builder3.ToString()); geändert in return builder3.ToString();.

9voto

Konstantinos Punkte 71
    // Dekodieren Sie einen Base64-String zu einem String
    public static string DecodeBase64(string value)
    {
        if(string.IsNullOrEmpty(value))
            return string.Empty;
        var valueBytes = System.Convert.FromBase64String(value);
        return System.Text.Encoding.UTF8.GetString(valueBytes);
    }

0voto

Gut versuch das:

using System;
using System.IO;

class Program
{
    static void Main()
    {
        string inputFile = "input.txt";
        string originalString = File.ReadAllText(inputFile);

        string encodedString = Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(originalString));

        string decodedString = System.Text.Encoding.UTF8.GetString(Convert.FromBase64String(encodedString));

        Console.WriteLine("Original string: " + originalString);
        Console.WriteLine("Encoded string: " + encodedString);
        Console.WriteLine("Decoded string: " + decodedString);

        string outputFile = "output.txt";
        File.WriteAllText(outputFile, decodedString);
    }
}

csharp

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X