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

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

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

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

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

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

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

Финкция дешифровки (работает нормально):
Код:
  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;
        }
при передаче ей шифрованной строки "a70a7592200bc6b1e3df05999034c64f" - получаю нормальный ответ - "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);

        }
получаю вот такое -http://s017.radikal.ru/i435/1402/76/ffb33bae81de.jpg
Помогите пожалуйста разобраться, где я ошибся.
denis76560 вне форума Ответить с цитированием
Старый 20.02.2014, 20:46   #2
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

а тут то чего не посмотрели? решение
внизу страницы пример
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
WorldMaster вне форума Ответить с цитированием
Старый 21.02.2014, 06:34   #3
denis76560
Форумчанин
 
Регистрация: 13.01.2010
Сообщений: 121
По умолчанию

Цитата:
Сообщение от WorldMaster Посмотреть сообщение
а тут то чего не посмотрели? решение
внизу страницы пример
Да я и так пробовал - результат тот-же.
denis76560 вне форума Ответить с цитированием
Старый 21.02.2014, 07:08   #4
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

Так а что вас не устраивает то?? Выходная строка это набор байтов, вы их преобразуете в аски символы .. понятно что будет билиберда.
Попробуйте формировать строку по другому, каждый байт переводите в HEX форму. Наверное это то чту вам будет нужно.
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
WorldMaster вне форума Ответить с цитированием
Старый 22.02.2014, 10:06   #5
denis76560
Форумчанин
 
Регистрация: 13.01.2010
Сообщений: 121
По умолчанию

Уважаемый WorlMaster, спасибо, но так ведь я в примере выше, в методе private static string smethod_33(string string_43)
вроде как это и сделал перевел String в байты
в первой строке самого метода
Код:
byte[] inputBuffer = Encoding.ASCII.GetBytes(string_43);
Добавлено:
Спасибо огромное за помощь, точно, я я забыл что мне в результате нужно байты переводиь в Hex.
Уже несколько дней себе голову ломал...
Только начал изучать C#.
Помогли примеры из топика http://www.jakeroid.com/rabota-s-hex-v-csharp.html

Последний раз редактировалось denis76560; 22.02.2014 в 11:02.
denis76560 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Шифрование InsolenceL Помощь студентам 7 27.09.2012 20:56
шифрование Runner Паскаль, Turbo Pascal, PascalABC.NET 0 17.06.2010 17:34
Шифрование buenosaire Помощь студентам 1 15.06.2010 21:54
ШИФРОВАНИЕ fobass Работа с сетью в Delphi 4 14.06.2010 20:32
Шифрование на С Jasper92 Общие вопросы C/C++ 1 23.12.2009 10:05