TripleDES шифрование в C # - PullRequest
       20

TripleDES шифрование в C #

4 голосов
/ 19 ноября 2008

Я пытаюсь шифровать TripleDES в режиме ECB. Мой код выглядит так:

public static string EncryptDES(string InputText)
        {
            byte[] key = new byte[] { 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48 };
            byte[] clearData = System.Text.Encoding.UTF8.GetBytes(InputText);
            MemoryStream ms = new MemoryStream();
            TripleDES alg = TripleDES.Create();
            alg.Key = key;
            alg.Mode = CipherMode.ECB;
            CryptoStream cs = new CryptoStream(ms, alg.CreateDecryptor(), CryptoStreamMode.Write);
            cs.Write(clearData, 0, clearData.Length);
            cs.FlushFinalBlock();
            byte[] CipherBytes = ms.ToArray();
            ms.Close();
            cs.Close();
            string EncryptedData = Convert.ToBase64String(CipherBytes);
            return EncryptedData;

        }

Когда я запускаю тест, я получаю исключение, что «Длина данных для расшифровки недопустима».

Кто-нибудь знает, что я делаю не так?

Заранее спасибо.

Обновление

Мой плохой! Я нашел свою проблему Вместо alg.CreateEncryptor() я использовал alg.CreateDecyptor().

Проблема копирования и вставки. (

Спасибо за помощь, ребята

Ответы [ 3 ]

7 голосов
/ 19 ноября 2008

Мой плохой! Я нашел свою проблему Вместо использования alg.CreateEncryptor() я использовал alg.CreateDecyptor().

Проблема копирования и вставки. (

Спасибо за помощь, ребята

0 голосов
/ 19 ноября 2008

Это может быть проблема с кодировкой. Убедитесь, что это в UTF-8 или что-то вменяемое. Может быть, что-то вроде этого:

Public Shared DefaultEncoding As Text.Encoding = _System.Text.Encoding.GetEncoding("Unicode")

(Ссылка: codeproject.com )

0 голосов
/ 19 ноября 2008

Похоже, ваш метод шифрования использует комбинацию ключ / соль, отличную от метода дешифрования, и не может расшифровать данные.

Во время отладки может быть полезно преобразовать ваш ключ и соль в читаемые строки и тратить цикл на преобразование их в байты ... по крайней мере для удобства чтения.

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