base64로 인코딩 된 문자열을 어떻게 디코딩합니까?


258

다음 Base64 문자열을 "디코딩"하려고합니다.

OBFZDTcPCxlCKhdXCQ0kMQhKPh9uIgYIAQxALBtZAwUeOzcdcUEeW0dMO1kbPElWCV1ISFFKZ0kdWF1

이것이 내가 문자열 자체에 대해 알고있는 것입니다.

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

문제는 원래 문자열이 무엇인지 알 수 있도록 Base64 문자열을 어떻게 디코딩합니까?


1
레거시를 지원할 때 "왜"가 일반적으로 관련이 없는지 알고 있지만 알아야합니다 ... 원래 문자열 Base64가 처음에 인코딩 된 이유는 무엇입니까?! ?? Base64는 일반적으로 XML 또는 JSON에 포함하기 위해 바이너리를 텍스트 기반의 이식 가능한 버전으로 변환하는 데 사용됩니다. 문자열을 인코딩 된 문자열로 변환하지 않고 웹 서비스 계층을 이동할 수 있습니다.
베리 피커

@barry - 내가 처리해야하기 때문에 ... 나는 여기에있어 더 오래된 게시물에 이전의 질문에 대답하기 위해 HTTP 인증 헤더 문자열을 base64로 인코딩 요구하는
freefaller

답변:


646

단순한:

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

18
이 답변을 완성하기 위해 Jerry Nixon은 이에 대한 훌륭한 게시물 을 가지고 있습니다.
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();.


고마워, 이것은 내가 찾고있는 대답 일뿐입니다. 나는 내 머리를 잡아 당겼다 : p
Rickard

48
@Rickard : 왼쪽의 답변 옆에있는 확인 표시를 클릭하여 문제를 해결하는 답변을 "수락"할 수 있습니다.
dtb

3
이 중 어느 것도 "암호화"또는 "암호 해독"이라고하지 마십시오. "암호화"와 "인코딩"을 구별 할 수있는 지점으로 만드십시오.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.