Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.02.2014, 17:25   #1
denis76560
Форумчанин
 
Регистрация: 13.01.2010
Сообщений: 121
По умолчанию TripleDES шифрование в C#

Здравствуйте дорогие форумчане.
Встретился с такой проблемой: имея функцию шифровки строки, пытаюсь написать обратную функцию, вроде как все делаю правильно - но в итоге получаю мусор какой-то вместо закодированной строки.
Посмотрите подалуйста.

Финкция дешифровки (работает нормально):

Код:
 private static string smethod_3(string string_43)
        {
            string_12 = "24D4C6028BCA1BE9134705A7AF01B2E4";
            string str = ((DateTime.Now.ToUniversalTime().Ticks - 0x89f7ff5f7b58000L) / 0x989680L).ToString();
            TripleDES edes = TripleDES.Create();
            edes.IV = Encoding.ASCII.GetBytes("password");
            string[] strArray = new string[] { "password", string_12[0].ToString(), string_12[1].ToString(), string_12[2].ToString(), 
                                                          str[3].ToString(), string_12[4].ToString(), string_12[5].ToString(), "@P6660juhl" };
            edes.Key = Encoding.ASCII.GetBytes(string.Concat(strArray));
            edes.Mode = CipherMode.CBC;
            edes.Padding = PaddingMode.Zeros;
            ICryptoTransform transform = edes.CreateDecryptor();
            byte[] inputBuffer = smethod_4(string_43);
            byte[] bytes = transform.TransformFinalBlock(inputBuffer, 0, inputBuffer.Length);
            return Encoding.ASCII.GetString(bytes);
        }


        private static byte[] smethod_4(string string_43)
        {
            byte[] buffer = new byte[string_43.Length / 2];
            int num = 0;
            for (int i = 0; i < string_43.Length; i += 2)
            {
                string s = string_43.Substring(i, 2);
                buffer[num++] = byte.Parse(s, NumberStyles.AllowHexSpecifier);
            }
            return buffer;
        }
при передаче ей шифрованной строки "a70a7592200bc6b1e3df05999034c6 4f" - получаю нормальный ответ - "a18064088".

А вот при шифровании этой же строки этим методом:

Код:
 private static string smethod_33(string string_43)
        {

            byte[] inputBuffer = Encoding.ASCII.GetBytes(string_43);
            string_12 = "24D4C6028BCA1BE9134705A7AF01B2E4";
            string str = ((DateTime.Now.ToUniversalTime().Ticks - 0x89f7ff5f7b58000L) / 0x989680L).ToString();
            TripleDES edes = TripleDES.Create();
            edes.IV = Encoding.ASCII.GetBytes("password");
            string[] strArray = new string[] {"password", string_12[0].ToString(), string_12[1].ToString(), string_12[2].ToString(), 
                                                   str[3].ToString(), string_12[4].ToString(), string_12[5].ToString(), "@P6660juhl" };
            edes.Key = Encoding.ASCII.GetBytes(string.Concat(strArray));
            edes.Mode = CipherMode.CBC;
            edes.Padding = PaddingMode.Zeros;
            ICryptoTransform transform = edes.CreateEncryptor();
            byte[] bytes = transform.TransformFinalBlock(inputBuffer, 0, inputBuffer.Length);
            return Encoding.ASCII.GetString(bytes);

        }
получаю вот такое -

Помогите пожалуйста разобраться, где я ошибся.

Последний раз редактировалось Stilet; 26.08.2014 в 20:04.
denis76560 вне форума Ответить с цитированием
Старый 20.02.2014, 18:12   #2
challengerr
Участник клуба
 
Аватар для challengerr
 
Регистрация: 30.07.2008
Сообщений: 1,601
По умолчанию

str функций шифровки и расшифровки различается, а ключ должен быть идентичным
"SPACE.THE FINAL FRONTIER.This's a voyage of starship Enterprise. It's 5-year mission to explore strange new worlds,to seek out new life and civilizations,to boldly go where no man has gone before"
challengerr вне форума Ответить с цитированием
Старый 26.08.2014, 20:02   #3
denis76560
Форумчанин
 
Регистрация: 13.01.2010
Сообщений: 121
По умолчанию

Так ведь ключ-то тут одинаковый в обоих методах
denis76560 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
TripleDES шифрование denis76560 C# (си шарп) 4 22.02.2014 10:06
Шифрование ZyaT-OK C++ Builder 3 17.06.2011 23:42
С++. Шифрование. Bernard Помощь студентам 2 30.05.2011 13:25
Шифрование Gregor Помощь студентам 2 04.12.2010 15:15