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

Posted

技术标签:

【中文标题】如何解码 base64 编码的字符串?【英文标题】:How do I decode a base64 encoded string? 【发布时间】:2011-10-31 09:07:57 【问题描述】:

我正在尝试“解码”以下 Base64 字符串:

OBFZDTcPCxlCKhdXCQ0kMQhKPh9uIgYIAQxALBtZAwUeOzcdcUEeW0dMO1kbPElWCV1ISFFKZ0kdWFlLAURPZhEFQVseXVtPOUUICVhMAzcfZ14AVEdIVVgfAUIBWVpOUlAeaUVMXFlKIy9rGUN0VF08Oz1BQYFfQc=

这是我对字符串本身的了解:

    原始字符串首先通过以下代码传递:

    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 字符串,以便找出原始字符串是什么?

【问题讨论】:

我知道“为什么”在支持遗留的东西时通常是无关紧要的,但我需要知道...为什么最初的字符串是 Base64 编码的?!?? Base64 通常用于将二进制转换为基于文本的可移植版本以嵌入 XML 或 JSON - 可能用于跨 Web 服务层移动,而不是用于将字符串转换为编码字符串。 @barry - 在更老的帖子上回答你的老问题...我来到这里是因为我需要处理需要 base64 编码字符串的HTTP Authorization Header 【参考方案1】:

简单:

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

【讨论】:

为了完成这个答案,杰里尼克松对此有一个great post。 别忘了添加命名空间'using System.Text'【参考方案2】:

m000493 方法似乎执行某种异或加密。这意味着可以使用相同的方法对文本进行编码和解码。你所要做的就是反向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();

【讨论】:

谢谢,这正是我正在寻找的答案。我差点拉扯我的头发:p @Rickard:您可以通过单击左侧答案旁边的复选标记“接受”解决您问题的答案。 请不要将这些称为“加密”或“解密”。明确区分“加密”和“编码”。

以上是关于如何解码 base64 编码的字符串?的主要内容,如果未能解决你的问题,请参考以下文章

NodeJS:如何将base64编码的字符串解码回二进制? [复制]

如何在打字稿快递服务器中将字符串解码/编码为base64

javascript NodeJS:如何将base64编码的字符串解码回二进制?

使用Javascript的atob解码base64不能正确解码utf-8字符串

Python和Mysql:base64编码和解码字符串,短信sms解码

2018-07-17 Base64解码与编码