2012-03-26 3 views
7

일부 문자열을 base-64 문자열에서 앞뒤로 인코딩하려고하는데 올바른 결과를 얻으려면 truble을 사용해야합니다.base-64와의 문자열 인코딩

string text = base64string.... //Here I have a base-64 string. 
byte[] encodedByte = System.Text.ASCIIEncoding.ASCII.GetBytes(text); 
string base64Encoded = Convert.ToBase64String(encodedByte); 

if (text == base64Encoded) //If the new encoded string is equal to its original value 
    return base64Encoded; 

나는 이것을 수행하는 방법을 시도했지만 올바른 결과를 얻지 못했습니다. 나는 모두 System.Text.Encoding.UnicodeSystem.Text.Encoding.UTF8

으로 무엇을 시도 했습니까? 누구든지 적절한 해결책을 가지고 있습니까?

+0

코드를 읽으면 base64 문자열을 가져온 다음 base64로 인코딩 한 다음 인코딩 된 문자열을 orignal과 비교합니까? – Brian

+0

인코딩 된 양식부터 시작하는 이유는 무엇입니까? 일반 텍스트에서 먼저 인코딩을 시도한 다음 해독 할 수 있습니다. 아니면 인코딩/디코딩 알고리즘을 직접 구현하려고합니까? – Attila

+0

@ 브라이언 - 네가하는 일이야. –

답변

9
string text = base64string.... //Here I have a base-64 string. 
byte[] encodedByte = System.Text.ASCIIEncoding.ASCII.GetBytes(text); 
string base64Encoded = Convert.ToBase64String(encodedByte); 

문자열을 이중 인코딩합니다. base64 문자열로 시작하여 바이트를 가져온 다음 을 다시 인코딩합니다.. 비교하고 싶다면 원래 문자열로 시작해야합니다. text 만약

+0

S - 알아. 내가 원하는 것은 base-64 문자열을 다른 형식으로 인코딩 한 다음 다시 base-64로 다시 인코딩하여 인코딩 결과가 데이터를 잃어 버리지 않았는지 확인하는 것입니다. 어리석은 조작 인 것을 나는 안다. 그러나 나는 그것을 어떻게해서든지하고 싶다. –

+2

@ErikLarsson : 음, base64는 이미 데이터를 잃지 않는다는 것을 보장합니다. 그래서 그 점을 보지 못합니다. 그러나, 내가 무엇을 말하고 있는지 안다면 ... 그 질문은 무엇입니까? 분명히 문자열을 반복해서 인코딩 할 때 똑같은 것을 얻지 못할 것입니다.원래 문자열로 시작하고, 인코딩하고, 실제로 확인하려면 해독하십시오. –

6

는 당신은 거꾸로을하고,베이스-64 문자열하십시오 string로 당신에게 그것을 얻을 것이다

byte[] raw = Convert.FromBase64String(text); // unpack the base-64 to a blob 
string s = Encoding.UTF8.GetString(raw); // assume the blob is UTF-8, and 
             // decode to a string 

. 이 시나리오는 유니 코드 텍스트를 ASCII 형식으로 표현할 때만 유용합니다. 원래 내용이 string 인 경우 일반적으로 base-64로 인코딩하지 않습니다.

0

인코딩 코드가 올바르게 배치되었습니다. 당신이 다음과 FromBase64String을 사용하여 바이트 배열로 Base64로 필요한 것이 무엇이든

var decodedBytes = Convert.FromBase64String(base64encoded); 
var compareText = System.Text.Encoding.ASCII.GetString(decodedText); 

if (text == compareText) 
{ 
    // carry on... 
    return base64encoded; 
} 
1

변환 : base64로 인코딩 된 문자열이 정확한지 여부를 확인하려면, 당신은 그것을 디코딩하고 원래 디코딩 된 내용을 비교하는 시도 할 수 있습니다 Base64로와 변환 할 ToBase64String :

Byte[] buffer = Convert.FromBase64String(myBase64String1); 
myBase64String2 = Convert.ToBase64String(buffer); 

myBase64String1가 myBase64String2와 동일합니다. 데이터 유형을 Byte 배열로 가져 오려면 다른 메소드를 사용해야하며 데이터 유형을 다시 가져 오려면 역순을 사용해야합니다. 클래스의 내용을 바이트 배열로 변환 한 다음 Base64 문자열로 변환하고 문자열을 파일 시스템에 씁니다. 나중에 나는 프로세스를 뒤집어 클래스 인스턴스로 다시 읽는다.