Странные персонажи, использующие шифрование - PullRequest
0 голосов
/ 12 марта 2011

в моей программе я шифрую и дешифрую файл .PNG с использованием алгоритма Triple DES. Он шифрует и дешифрует, но некоторые символы в .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);

1 Ответ

1 голос
/ 12 марта 2011

Да, это ошибка Unicode. Вы включили кодировку, которой он не принадлежит, читая данные в виде строки, поэтому ошибка возникает перед кодом, который вы показали.

Вы должны читать данные как двоичные данные, чтобы вы с самого начала получали их как байтовый массив, чтобы можно было пропустить преобразование в Unicode и обратно, поскольку именно это и вызывает ошибку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...