मैं एक बेस 64 एनकोडेड स्ट्रिंग को कैसे डीकोड कर सकता हूं?


258

मैं निम्नलिखित बेस 64 स्ट्रिंग को "डीकोड" करने की कोशिश कर रहा हूं:

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

सवाल यह है कि मैं बेस 64 स्ट्रिंग को कैसे डीकोड करूं ताकि मुझे पता चल सके कि मूल स्ट्रिंग क्या है?


1
मुझे पता है कि "क्यों" आम तौर पर विरासत सामान का समर्थन करते समय अप्रासंगिक होता है, लेकिन मुझे यह जानने की आवश्यकता है ... मूल स्ट्रिंग Base64 को पहली जगह में एन्कोड क्यों किया गया था? " बेस 64 को आमतौर पर बाइनरी को XML या JSON में एम्बेड करने के लिए एक टेक्स्ट आधारित पोर्टेबल संस्करण में परिवर्तित करने के लिए उपयोग किया जाता है - संभवतः एक वेब सेवा परत में स्थानांतरित करने के लिए, स्ट्रिंग को एन्कोडेड स्ट्रिंग में परिवर्तित करने के लिए नहीं।
बैरीपिकर

@barry - आपके पुराने प्रश्न का उत्तर एक पुराने पोस्ट पर देने के लिए ... मुझे यहां इसलिए मिला क्योंकि मुझे HTTP प्राधिकरण हेडर से निपटने की आवश्यकता है जिसके लिए base64 एन्कोडेड स्ट्रिंग
freefaller

जवाबों:


646

सरल:

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

18
इस उत्तर को पूरा करने के लिए, जैरी निक्सन ने इस पर एक महान पोस्ट किया है।
orad

4
और भूलकर भी 'System.Text' का उपयोग करके नामस्थान जोड़ना न भूलें
एकलव्य

85

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
@ रिकर्ड: आप एक उत्तर को "स्वीकार" कर सकते हैं जो बाईं ओर उत्तर के बगल में स्थित चेकमार्क पर क्लिक करके आपकी समस्या को हल करता है।
dtb

3
कृपया इसमें से किसी को "एन्क्रिप्शन" या "डिक्रिप्शन" के रूप में संदर्भित न करें। इसे "एन्क्रिप्शन" और "एन्कोडिंग" के बीच अंतर करने के लिए एक बिंदु बनाएं।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.