如何解码base64编码的字符串?

Ric*_*ard 246 c# base64 encoding

我试图"解码"以下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());
    }
    
    Run Code Online (Sandbox Code Playgroud)

    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;
    }
    
    Run Code Online (Sandbox Code Playgroud)

问题是,如何解码Base64字符串,以便我可以找出原始字符串是什么?

Mat*_*ott 618

简单:

byte[] data = Convert.FromBase64String(encodedString);
string decodedString = Encoding.UTF8.GetString(data);
Run Code Online (Sandbox Code Playgroud)

  • 为了完成这个答案,Jerry Nixon有一个[很棒的帖子](http://blog.jerrynixon.com/2014/11/reading-and-writing-base64-in-windows.html). (18认同)
  • 并且不要忘记添加名称空间“ using System.Text” (2认同)

dtb*_*dtb 83

m000493方法似乎执行某种XOR加密.这意味着可以使用相同的方法来加密和解密文本.你所要做的就是逆转m0001cd:

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

string result = m000493(p0, "_p0lizei.");
//    result == "gaia^unplugged^Ta..."
Run Code Online (Sandbox Code Playgroud)

return m0001cd(builder3.ToString());改变return builder3.ToString();.

  • @Rickard:您可以通过单击左侧答案旁边的复选标记来"接受"解决问题的答案. (47认同)
  • 请不要将其中任何一项称为“加密”或“解密”。请务必区分“加密”和“编码”。 (3认同)

Kon*_*nos 9

    // Decode a Base64 string to a 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);
    }
Run Code Online (Sandbox Code Playgroud)