2011-08-20 1 views
153

Base64でエンコードされた文字列をデコードするにはどうすればよいですか?私はこの次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.」であると想定されています。質問は、私は元の文字列が何であるかを知ることができるように、私は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文字列に変換され、 ?

  • +0

    「なぜ」は、従来のものをサポートするときには一般的に無関係ですが、私は知る必要があります...元の文字列Base64が最初にエンコードされたのはなぜですか? Base64は、XMLやJSONに埋め込むためのバイナリをテキストベースの移植可能なバージョンに変換するために使用されます。おそらく、文字列をエンコードされた文字列に変換するのではなく、Webサービスレイヤー全体に移動する必要があります。 – barrypicker

    答えて

    422

    シンプル:

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

    この回答を完了するには、Jerry Nixonに[偉大な投稿](http://blog.jerrynixon.com/2014/11/reading-and-writing-base64-in-windows.html)があります。 – orad

    51

    m000493方法はXOR暗号化のいくつかの種類を実行しているようです。つまり、テキストの暗号化と復号化の両方に同じ方法を使用できます。あなたがしなければならないのは逆m0001cdです:return m0001cd(builder3.ToString());

    string p0 = Encoding.UTF8.GetString(Convert.FromBase64String("OBFZDT...")); 
    
    string result = m000493(p0, "_p0lizei."); 
    // result == "gaia^unplugged^Ta..." 
    

    return builder3.ToString();に変更しました。

    +0

    ありがとう、これはちょうど私が探していた答えでした。 私は髪の毛を引っ張っていました:p – Rickard

    +31

    @Rickard:左側の答えの隣にあるチェックマークをクリックすることで、あなたの問題を解決する答えを "受け入れる"ことができます。 – dtb

    +2

    それを受け入れてください、それは5年半です! – Mardoxx

    関連する問題