2011-08-20 19 views
153

estoy tratando de "decodificar" esta cadena siguiente Base 64:¿Cómo decodifico una cadena codificada en base64?

OBFZDTcPCxlCKhdXCQ0kMQhKPh9uIgYIAQxALBtZAwUeOzcdcUEeW0dMO1kbPElWCV1ISFFKZ0kdWFlLAURPZhEFQVseXVtPOUUICVhMAzcfZ14AVEdIVVgfAUIBWVpOUlAeaUVMXFlKIy9rGUN0VF08Oz1POxFfTCcVFw1LMQNbBQYWAQ ==

Esto es lo que sé sobre la propia cadena:

  1. La cadena original es primero pasó por el siguiente código:

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

    La parte p1 en el código se supone que es la cadena "_p0lizei.".

  2. A continuación, se convierte en una cadena base 64 por el siguiente código:

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

La pregunta es, ¿cómo decodificar la cadena de base 64 para que pueda averiguar lo que la cadena original es ?

+0

Sé que "Por qué" es generalmente irrelevante al admitir cosas heredadas, pero necesito saber ... ¿Por qué fue la cadena original Base64 codificada en primer lugar?! ?? Base64 se usa generalmente para convertir el binario en una versión portátil basada en texto para su incrustación en XML o JSON, posiblemente para moverse a través de una capa de servicio web, no para convertir cadena en cadena codificada. – barrypicker

Respuesta

422

simple:

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

Para completar esta respuesta, Jerry Nixon tiene una [gran publicación] (http://blog.jerrynixon.com/2014/11/reading-and-writing-base64-in-windows.html) sobre esto. – orad

51

El método parece m000493 para llevar a cabo algún tipo de cifrado XOR. Esto significa que se puede usar el mismo método para encriptar y descifrar el texto. Todo lo que tiene que hacer es inversa m0001cd:

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

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

con return m0001cd(builder3.ToString()); cambió a return builder3.ToString();.

+0

Gracias, esta fue solo la respuesta que estaba buscando. Estuve cerca de tirar de mi cabello: p – Rickard

+31

@Rickard: puede "aceptar" una respuesta que resuelva su problema haciendo clic en la marca de verificación junto a la respuesta en el lado izquierdo. – dtb

+2

¡Acéptalo, han pasado 5 años y medio! – Mardoxx

Cuestiones relacionadas