Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема с кодировкой 
:(
    Опции темы
Vitkaz
Дата 9.10.2009, 19:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 90
Регистрация: 29.11.2006

Репутация: нет
Всего: нет



     Привет всем! Нужно было расшифровать слово, зашифрованное методом RSA.  Я расшифровал, но вроде бы как не совсем. Проблема в том, что текст в textbox`е отображается в какой-то кодировке, какой не пойму. Вот это слово: Êîðèäîð. Если всавить это слово в txt и открыть программой Штирлец, то слово отображается нормально. Можно ли изметить отображение текста в textbox`е ?
PM MAIL   Вверх
V0LT
Дата 9.10.2009, 20:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 91
Регистрация: 16.6.2009

Репутация: нет
Всего: 2



Delphi 2009 или 2010?
VS 2010 ... опишите среду

Это сообщение отредактировал(а) V0LT - 9.10.2009, 20:05
PM MAIL ICQ   Вверх
Vitkaz
Дата 9.10.2009, 20:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 90
Регистрация: 29.11.2006

Репутация: нет
Всего: нет



Цитата(V0LT @ 9.10.2009,  20:05)
Delphi 2009 или 2010?
VS 2010 ... опишите среду

VS 2008, C#
PM MAIL   Вверх
BinaryShadow
Дата 9.10.2009, 21:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 10.3.2004

Репутация: 1
Всего: 1



Для начала попробуй изменить шрифт в свойстве font. Если не поможет, то копай в сторону Encoding.
PM   Вверх
Vitkaz
Дата 9.10.2009, 21:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 90
Регистрация: 29.11.2006

Репутация: нет
Всего: нет



Цитата(BinaryShadow @ 9.10.2009,  21:11)
Для начала попробуй изменить шрифт в свойстве font. Если не поможет, то копай в сторону Encoding.

Font не помогает, а можно подробнее о Encoding. Раньше не приходилось ничего подобного делать.
PM MAIL   Вверх
BinaryShadow
Дата 9.10.2009, 21:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 10.3.2004

Репутация: 1
Всего: 1



Кусок кода в студию, так сложно подсказать.
PM   Вверх
Vitkaz
Дата 9.10.2009, 21:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 90
Регистрация: 29.11.2006

Репутация: нет
Всего: нет



Входная строка str имеет вид: (49096,63084,8557,3743,4162,63084,8557) - зашифрованные символы
Код

{......

if (!f)// если, расшифровка 
            {
                 m=strret(str, mas, ',');//передаем пустой массив и строку, заполняем массив закодированными символами
            }
            //Расшифровка (возведение в степень по модулю)
             for ( j = 0; j < mas.Length; j++)
             {
                 i = k;
             d =mas[j];
             while (i >0)
             {
                     d = d * d % N;
                 if (bytes[i - 1] == 1)
                     d = d * mas[j] % N;
                 i--;
             }
             mas[j] = d;
             }
           
 //вывод             
                str=null;
                for (j = 0; j <= m; j++)
                str+= Convert.ToChar(mas[j]);//получаю символы и добавляю в строку

                textBox7.Font = new Font("Courier New", 8);
                textBox7.Text = str;
               
}
            


Это сообщение отредактировал(а) Vitkaz - 9.10.2009, 22:43
PM MAIL   Вверх
BinaryShadow
Дата 9.10.2009, 23:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 10.3.2004

Репутация: 1
Всего: 1



Легче не стало.
Попробуй в строке str+= Convert.ToChar(mas[j]);//получаю символы и добавляю в строку изменить преобразование, к примеру на ToString.

Не, эти функции все в юникоде возвращают. 
Попробуй исключить из кода блок шифрования, если будут символы нормально отображаться значит дело в алгоритме (что скорее всего). Ты когда производишь шифрование, скорее всего работаешь в символами 8-ми битными.

Это сообщение отредактировал(а) BinaryShadow - 10.10.2009, 00:36
PM   Вверх
Vitkaz
Дата 10.10.2009, 20:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 90
Регистрация: 29.11.2006

Репутация: нет
Всего: нет



Цитата(BinaryShadow @ 9.10.2009,  23:12)
Легче не стало.
Попробуй в строке str+= Convert.ToChar(mas[j]);//получаю символы и добавляю в строку изменить преобразование, к примеру на ToString.

Не, эти функции все в юникоде возвращают. 
Попробуй исключить из кода блок шифрования, если будут символы нормально отображаться значит дело в алгоритме (что скорее всего). Ты когда производишь шифрование, скорее всего работаешь в символами 8-ми битными.

      Дело в том, что любой текст, который я ввожу сам, зашифровывается и расшифровывается нормально, а это слово дал расшифровать препод  и такая поблема только с этим зашифрованным словом. И блок шифрования я убрать не могу т.к. я эти символы получаю в результальте преобразования чисел, полученных с помощью применения этого блока.  
      Может не совсем понятно т.е. есть форма.
      http://files.mail.ru/RCSI4T?t=1
     В ней есть поля для ввода текста, который нужно зашифровать, либо можно ввести зашифрованный текст( например: 49096,63084,8557,3743,4162,63084,8557,), который нужно расшифровать. Так вот, я ввожу этот текст, текст преобразуется в массив, после чего к каждому элементу массива применяется блок расшифровки, получаем: 202,238,240,232,228,238,240
Преобразуем в символы.
 str+= Convert.ToChar(mas[j]);--------->Êîðèäîð

Это сообщение отредактировал(а) Vitkaz - 10.10.2009, 21:28
PM MAIL   Вверх
BinaryShadow
Дата 10.10.2009, 21:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 10.3.2004

Репутация: 1
Всего: 1



Цитата(Vitkaz @  10.10.2009,  20:15 Найти цитируемый пост)
а это слово дал расшифровать препод 

Я думаю это ключ. Если алгоритм расшифровывает только то, что сам зашифровал значит дело в нем.
PM   Вверх
Vitkaz
Дата 10.10.2009, 21:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 90
Регистрация: 29.11.2006

Репутация: нет
Всего: нет



Цитата(BinaryShadow @ 10.10.2009,  21:24)
Цитата(Vitkaz @  10.10.2009,  20:15 Найти цитируемый пост)
а это слово дал расшифровать препод 

Я думаю это ключ. Если алгоритм расшифровывает только то, что сам зашифровал значит дело в нем.

см. форму. Там параметр e ключ зашифровки, d ключ расшифровки, N используется для возведения в степень по модулю N, т.е. все параметры известны. И если это не понятное слово открыть с помощью программы Штирлец, то это слово нормально отображается. Это слово "коридор", оно зашифровано ключом e.

Это сообщение отредактировал(а) Vitkaz - 10.10.2009, 21:39
PM MAIL   Вверх
avvo
Дата 20.10.2009, 08:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 60
Регистрация: 11.9.2007

Репутация: 1
Всего: 4



Все строки в.net - это строки в кодировке UTF32.
Соответственно ToChar:
Converts the value of the specified 32-bit signed integer to its equivalent Unicode character.
т.е. воспринимает передаваемые ей числа как rjды символов в кодировке UTF32. Русские буквы там начинаются далеко за пределами третьей сотни.

Соответственно вместо Convert.ToChar(mas[j])
должно быть что-то вроде
Encoding.GetEncoding(1251).GetChars(new byte[] { (byte)(mas[j]) });
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0545 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.