2011-03-12 37 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

是的,這是一個unicode錯誤。您通過將數據作爲字符串讀取而涉及到不屬於的編碼,因此錯誤出現在您顯示的代碼之前。

您應該將數據讀取爲二進制數據,以便從頭開始將其作爲字節數組,以便您可以跳過轉換爲unicode並返回,因爲這是導致錯誤的原因。