2011-03-12 9 views
0

私のプログラムでは、トリプルDESアルゴリズムを使って.PNGファイルを暗号化して解読しています。それは暗号化と解読を行いますが、.PNGの文字の一部は次の文字に置き換えられます。 �暗号化を使用している奇妙な文字

私はそれがUnicodeエラーであると判断しますが、何が起きているのか分かりません。コードは次のとおりです。

 byte[] encrypted_data = UTF8Encoding.UTF8.GetBytes(file_data); 
     TripleDESCryptoServiceProvider tdes = new TripleDESCryptoServiceProvider(); 
     tdes.Key = key; 
     tdes.Mode = CipherMode.ECB; 
     tdes.Padding = PaddingMode.PKCS7; 
     ICryptoTransform cTransform = tdes.CreateEncryptor(); 
     byte[] resultArray = 
     cTransform.TransformFinalBlock(encrypted_data, 0, encrypted_data.Length); 
     tdes.Clear(); 
     return Convert.ToBase64String(resultArray, 0, resultArray.Length); 
+5

バイナリデータをテキスト方式で処理するのはなぜですか? –

+1

PNGデータをUTF-8として読んでいるのはなぜですか?それはバイナリです。 – Lazarus

答えて

1

はい、ユニコードエラーです。文字列としてデータを読み込むことによって、エンコーディングが含まれていないエンコーディングが含まれているため、エラーは表示されているコードの前になります。

データをバイナリデータとして読み込んで、最初からバイト配列として取得する必要があります。変換をスキップしてユニコードに戻し、エラーの原因となるように戻すことができます。

関連する問題