2012-03-26 4 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文字列で始まり、バイトを取得し、次にをエンコードします。比較したい場合は、元の文字列で始める必要があります。

+0

S - 私はそれを知っています。私が望むのは、ベース64の文字列を別のフォーマットにエンコードし、再びエンコーディングしてベース64に戻し、エンコーディングの結果がデータを失わないかどうかを確認することです。私はそれが愚かな操作だと知っていますが、とにかくそれをやりたいのです。 –

+2

@ErikLarsson:まあ、base64はあなたがデータを失わないことを保証しているので、私はその点を見ません。しかし、私があなたに何を伝えているかを知っていれば...質問は何ですか?明らかに、あなたは何度も何度も文字列をエンコードするときに同じことをしません。元の文字列で始まり、エンコードし、実際にチェックしたい場合はデコードしてください。 –

6

textは、ベース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 

を。ただし、このシナリオはUnicodeテキストを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と等しくなります。データ型をバイト配列に取得するには、他のメソッドを使用し、データ型を戻すには逆を使用する必要があります。私はこれを使用して、クラスの内容をバイト配列に変換し、次にBase64文字列に変換し、文字列をファイルシステムに書き出しました。その後、プロセスを逆にしてクラスインスタンスに戻します。

関連する問題