С Новым годом! Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.59/22: Рейтинг темы: голосов - 22, средняя оценка - 4.59
1 / 1 / 1
Регистрация: 27.09.2011
Сообщений: 98
1

Битное шифрование с ключом

06.02.2012, 12:38. Показов 4618. Ответов 19
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Как работает битное шифрование? Дайте пример, если не сложно
Заранее спасибо
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.02.2012, 12:38
Ответы с готовыми решениями:

Шифрование с открытым ключом
Заинтересовался недавно шифрованием, слышал что есть так называемые "open source" шифраторы, но...

Шифрование таблицей с ключом
Добрый день форумчане. Стоит задача сделать прогу для шифрования таблицей с ключом. У меня...

Шифрование данных ПРИВАТНЫМ ключом
Да-да, я знаю что это не шифрование, а создание ЭЦП. Также знаю, что в crypto api эта функция...

Шифрование/дешифрование методом RSA с открытым ключом. С++
Помогите, пожалуйста, написать программу. Задали задание, а я совершенно не понимаю С++, как это...

19
return (true);
1976 / 1111 / 221
Регистрация: 19.04.2011
Сообщений: 2,345
06.02.2012, 12:44 2
На самом примитиве
C++
1
2
3
4
int data=3; 
int key=5;
int cipher=data^key;
int decipher=cipher^key;
1
1 / 1 / 1
Регистрация: 27.09.2011
Сообщений: 98
06.02.2012, 13:22  [ТС] 3
Датой может являться строка, в которой могут содержаться как буквы, так и цифры, или это рассматривается, как отдельный вариант?
И как расшифровка так же возводится в степень ключа? Ведь так же получается большее число, что никак не может быть равно дате.
0
return (true);
1976 / 1111 / 221
Регистрация: 19.04.2011
Сообщений: 2,345
06.02.2012, 13:32 4
Цитата Сообщение от Gextar Посмотреть сообщение
Датой может являться строка
Строка - набор байтиков, байтики - это числа, дальше продолжать?
Цитата Сообщение от Gextar Посмотреть сообщение
так же возводится в степень ключа
Кто вам сказал, что это степень?
1
1 / 1 / 1
Регистрация: 27.09.2011
Сообщений: 98
06.02.2012, 13:45  [ТС] 5
Теперь все понятно. Большое спасибо

Добавлено через 10 минут
UPD:Конечно, извините за глупый(возможно) вопрос, но, на практике оказалось, что программа отказывается сочетать стринг с интом. Как исстребить этот изъян?
0
return (true);
1976 / 1111 / 221
Регистрация: 19.04.2011
Сообщений: 2,345
06.02.2012, 13:46 6
Цитата Сообщение от Gextar Посмотреть сообщение
программа отказывается сочетать стринг с интом
А как вы их сочетали? И да, int тут для примера. Как правило это делается на массивах char[]
0
1 / 1 / 1
Регистрация: 27.09.2011
Сообщений: 98
06.02.2012, 13:50  [ТС] 7
mimicria, т.е. приравнивать будущее значение ключа к массиву символов? Или я не правильно понимаю?
0
return (true);
1976 / 1111 / 221
Регистрация: 19.04.2011
Сообщений: 2,345
06.02.2012, 13:56 8
Цитата Сообщение от Gextar Посмотреть сообщение
будущее значение ключа
Что значит будущее значение? Ключ должен полностью существовать на момент шифрования
C++
1
2
3
4
5
6
7
8
9
 char data[]="Test message";
 char keys[]="Key with the same length or longer";
 int meslen=sizeof(data);
 char *cipher=new char [meslen];
 char *decipher=new char [meslen];
 for (int i=0; i<meslen; i++)
  cipher[i]=data[i]^keys[i];
 for (int i=0; i<meslen; i++)
  decipher[i]=cipher[i]^keys[i];
Так понятней?
1
1 / 1 / 1
Регистрация: 27.09.2011
Сообщений: 98
06.02.2012, 16:58  [ТС] 9
Да, спасибо

Добавлено через 2 часа 5 минут
UPD: Еще, дабы не создавать новую тему - подскажите, как приравнять строку в едите, а не заданную к символьному массиву? Если разбивать на символы - не хочет, вытаскивать строку в переменную - не хочет.
0
Практикантроп
4840 / 2725 / 533
Регистрация: 23.09.2011
Сообщений: 5,795
06.02.2012, 17:13 10
Цитата Сообщение от Gextar Посмотреть сообщение
как приравнять строку в едите, а не заданную к символьному массиву? Если разбивать на символы - не хочет, вытаскивать строку в переменную - не хочет.
C++
1
char *myStroka = Edit1->Text.c_str() ;
1
1 / 1 / 1
Регистрация: 27.09.2011
Сообщений: 98
06.02.2012, 17:29  [ТС] 11
Цитата Сообщение от nick42 Посмотреть сообщение
C++
1
char *myStroka = (AnsiString)(моя строка).c_str() ;
Все равно ругается, что нельзя конвертировать строку в *char.
0
Практикантроп
4840 / 2725 / 533
Регистрация: 23.09.2011
Сообщений: 5,795
06.02.2012, 17:32 12
Цитата Сообщение от Gextar Посмотреть сообщение
Все равно ругается, что нельзя конвертировать строку в *char.
Не должен бы..., разве что заморочка с UNI-кодом.
0
1 / 1 / 1
Регистрация: 27.09.2011
Сообщений: 98
06.02.2012, 18:03  [ТС] 13
При расшифровке на цикле вылетает ошибка. В чем может быть проблема?
C++
1
2
3
4
5
6
7
8
9
char keys[]="121314124351";
ini = new TIniFile("mhide.ini");
String tb=ini->ReadString("Passes",Edit1->Text,(шифрованный));
AnsiString(tb).c_str();
int meslen=sizeof(tb);
char *decipher=new char [meslen];
for (int i=0; i<meslen; i++) {
  decipher[i]=tb[i]^keys[i];
  }
Добавлено через 16 минут
То же самое, если проделывать "дешифровку" с незашифрованной строкой (задавать ее при нажатии на кнопку)
0
Практикантроп
4840 / 2725 / 533
Регистрация: 23.09.2011
Сообщений: 5,795
06.02.2012, 18:07 14
Цитата Сообщение от Gextar Посмотреть сообщение
При расшифровке на цикле вылетает ошибка. В чем может быть проблема?
- если в цикле, то скорее всего причина в том, что индекс цикла с 0 начинается (в строках индекс первого символа - 1). Попробуй индексировать с 1.
1
1 / 1 / 1
Регистрация: 27.09.2011
Сообщений: 98
06.02.2012, 18:12  [ТС] 15
Проблему решил. Образовалась еще одна. Размер символьного массива при шифровке (meslen). Всегда равен 4.
C++
1
2
3
4
5
6
7
char keys[]="ja71jJ730aksjdhak721973jah710jsh7AXNz";
char *tb1 = Edit2->Text.c_str() ;
 int meslen=sizeof(tb1);
  char *cipher=new char [meslen];
  for (int i=0; i<meslen; i++){
  cipher[i]=tb1[i]^keys[i];
 }
Добавлено через 1 минуту
Цитата Сообщение от nick42 Посмотреть сообщение
- если в цикле, то скорее всего причина в том, что индекс цикла с 0 начинается (в строках индекс первого символа - 1). Попробуй индексировать с 1.
Я просто сразу при чтении из файла ини переводил в символьный массив.
0
Практикантроп
4840 / 2725 / 533
Регистрация: 23.09.2011
Сообщений: 5,795
06.02.2012, 18:32 16
Пробуй иначе; напр:
C++
1
int meslen=Edit2->Text.Length();
0
1 / 1 / 1
Регистрация: 27.09.2011
Сообщений: 98
06.02.2012, 19:21  [ТС] 17
А смысл? При дешифровке все равно придется использовать сайзоф, который даст подобный эффект. И расшифрованное сообщение разрежется.

Добавлено через 40 минут
Так вот, в результате псевдо-тестов обнаружил, что косяк за этой строчкой:
C++
1
char *tb1 = Edit2->Text.c_str() ;
Т.е. превращение строки в массив из чар. Так вот вопрос - как можно ее заменить на что-нибудь более оптимальное?
0
652 / 462 / 80
Регистрация: 26.10.2010
Сообщений: 1,263
Записей в блоге: 4
06.02.2012, 19:37 18
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
const AnsiString CodeString(const AnsiString &in)
{
// Длина строки
  const int size = in.Length() + 1;
// Возвращаемая строка
  AnsiString result = "";
 
  if (in.Trim() != "")
  {
    for (int i = 1; i < size; i++)
    {
// Прибавляем к результату перевернутую входящую строку
      result += (char) (in[size - i] ^ 20);
    }
  }
// Возварщаем
  return result;
}
C++
1
2
// Вызываем функцию шифровки\дешифровки
Memo1->Text = CodeString(Memo1->Text);
1
1 / 1 / 1
Регистрация: 27.09.2011
Сообщений: 98
06.02.2012, 19:41  [ТС] 19
QVO, можете дать краткие комментарии, если вас не затруднит? И дешифровка делается тем же кодом?
0
652 / 462 / 80
Регистрация: 26.10.2010
Сообщений: 1,263
Записей в блоге: 4
06.02.2012, 19:47 20
Gextar, Шифрование с заменой символов
1
06.02.2012, 19:47
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.02.2012, 19:47
Помогаю со студенческими работами здесь

Шифрование методом перестановки с заданным ключом текста любой длины
здравствуйте прошу помочь с исправлением кода #include &lt;iostream&gt; #include &lt;string&gt; #include...

Шифрование методом перестановки символов открытого текста в соответствии с некоторым правилом (ключом)
Здравствуйте,хочу обратиться за помощью в написании консольной программы(C ++ Visual studio),буду...

Написать функцию, которая принимает 32 битное целое число и возвращает 16 битное целое число
Помогите написать программу, использующую функцию, которая принимает 32 битное целое число и...

64 битное шифрование
добрый вечер можно ли написать программу, которая шифровала бы текст 64 битным шифрованием(хотя...

Шифрование перестановкой с ключом
Доброго времени суток. Вопрос следующий. Дано задание зашифровать текстовый файл методом...

Шифрование текста с ключом
Доброго времени суток. Недавно в университете начали изучать Ruby и преподаватель дал одно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru