Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Алгоритмы > Криптография


Автор: SAVANE 3.10.2006, 17:25
Нашел много литературы по теории шифрования даных оч интересно, но я пишу курсовую и задание написать алгоритм шифрования. Можо конечн написать алгоритм Цезаря, но это не интересно.
Подскажите какой алгоритм можна рассмотреть. 

Автор: maxim1000 3.10.2006, 17:40
можно немного модифицировать алгоритм Цезаря, чтобы он перестал ломаться слишком просто:
самый простой метод определить сдвиг, использованный при шифровании - посмотреть на статистику зашифрованного текста, найти там самый частый элемент и сравнить его с самым частым элементом в обычных текстах (пробел - один из хороших кандидатов)
перебрать несколько наиболее частых вариантов и получить несколько сдвигов, попробовать каждый и посмотреть, какой даст читаемый результат

усложнение состоит в том, что статистика символов текста "выравнивается"
например, есть всего три буквы и пробел, каждая буква встречается с вероятностью 0.1, а пробел - 0.7, тогда есть смысл добавить в алфавит ещё 6 фиктивных пробелов и когда пробел будет шифроваться, заменять его на один из 7 доступных символов (выбирать нужно случайным образом), буквы шифровать как есть
при дешифровке каждый из 7 пробельных символом заменять пробелом
тогда каждый символ будет иметь одинаковую частоту появления, что немного затруднит взлом...

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

Автор: spin2 3.10.2006, 18:12
Можно наш ГОСТ или AES

Автор: cardinal 3.10.2006, 20:59
А можно стеганографию! smile 

http://vingrad.ru/VB-VB-002142

Автор: SparF 3.10.2006, 23:56
В свое время я реализовывал RC5 - не очень сложно, но сам алгоритм  - достойный )
Цитата(spin2 @  3.10.2006,  18:12 Найти цитируемый пост)
Можно наш ГОСТ или AES 

Можно, конечно )) вот только стоит ли сразу за такие алгоритмы браться?

Автор: SAVANE 4.10.2006, 10:11
Нашел статью прикольную!

Материал, изложенный в данной статье, первоначально составлял содержание
секретного доклада «Математическая теория криптографии», датированного
1 сентября 1945 г, который в настоящее время рассекречен.

Оказуется алгоритм Цезаря это часный случай алгоритма Виженера. Его и буду расматривать. Довольно просто, но можно накладывать  разные методы на один текст получается довольно прикольно.

Кому интересно могу выслать статейку, ссылки не дам потому как не помню где нашел.


Автор: spin2 4.10.2006, 10:12
Конечно стоит!
Смысл реализовывать нестойкий алгоритм?? А в ГОСТе уж точно ничего сложного нет, лучше пока есть возможность наоборот познакомиься с ними поближе, может и пригодится потом.

Автор: SparF 4.10.2006, 10:36
spin2, 
Цитата(spin2 @  4.10.2006,  10:12 Найти цитируемый пост)
Смысл реализовывать нестойкий алгоритм??

Это ты не про RC5 случайно? ))))))

SAVANE, если для тебя важна стойкость - лучше реализуй один из сущестующих алгоритмов -- они проверены временем. Хочешь придумать что-то свое -- респект, вот только стойкость этой штуки вряд ли будет очень высокой.

Автор: spin2 4.10.2006, 11:25
Я как раз про то, что не все алгоритмы, проверенные временем, являются стойкими

Автор: SparF 4.10.2006, 11:40
spin2, Ну так надо перед реализацией почитать, инфу поискать, сравнить существующие по надежности, скорости и т.д.))
ИМХО "проверенные временем" == "стойкие" == те, над которыми бились десятки криптоаналитиков, но так и не нашли лучшего способа кроме перебора.

Автор: Romikgy 4.10.2006, 12:26
Цитата(SparF @  4.10.2006,  09:36 Найти цитируемый пост)
Это ты не про RC5 случайно? ))))))

а разве RC5 не стойкий алгоритм?

Автор: SparF 4.10.2006, 12:59
Romikgy, про то и разговор, что достаточно стойкий.

Автор: spin2 4.10.2006, 13:12
Так как раз и стоит подумать о том, что именно стойкие алгоритмы скорее сделают стандартом. Зачем же в Америке объвляли конкурс на алгоритм для стандарта, если есть такие чудесные стойкие и проверенные временем алгоритмы? smile

Автор: SparF 4.10.2006, 13:17
1. С ростом вычислительной мощности многие алгоритмы постепенно перестают удовлетворять стандартам. Пример DES - который сейчас вообще не котируется, вот поэтому и надо гос-венным огранизациям проводить конкурсы. На службе у гос-ва должен быть лучший алгоритм. Но это не значит, что все остальные - плохие.

Цитата(spin2 @  4.10.2006,  13:12 Найти цитируемый пост)
Зачем же в Америке объвляли конкурс на алгоритм для стандарта, если есть такие чудесные стойкие и проверенные временем алгоритмы?


Зачем Мерседес, если есть Вольво? =)

PS если дашь ссылку на найденную уязвимость в RC5 - буду очень благодарен. 

Автор: MaxB 4.10.2006, 14:16
На счёт RC5 не знаю.

Но я считаю, что алгоритм RSA один из самых стойких, хотя и медленный.

Вот его реализация. Тестируйте кому интересно.


http://www.forum.vingrad.ru/index.php?showtopic=113936

 

Автор: SAVANE 4.10.2006, 14:42
Не мне надо не сложный алгоритм, он не для практического использования, а для того чтоб на нем методичиски можно было показать принцып работы, посчитать все характеристики. Учусь в Пед университете.

Про RSA прочитал, но алгоритма шифрования не знаю, потому ничего не могу сказать! Хотя респект автору!

Автор: Romikgy 4.10.2006, 14:43
MaxB, имхо это рекламой называется! А ее здесь не сильно любять! ИМХО!
ЗЫ тем более ты исходники досих пор не выложил!

Автор: spin2 4.10.2006, 16:04
Если для себя, то можно Энигму сделать smile

Автор: MaxB 4.10.2006, 18:51
Цитата

MaxB, имхо это рекламой называется! А ее здесь не сильно любять! ИМХО!
ЗЫ тем более ты исходники досих пор не выложил! 



Romikgy, Почему реклам? smile  SAVANE, просил подсказать крипото систему, вот я и подсказал RSA. Так как, система стоит того.

Цитата

Не мне надо не сложный алгоритм, он не для практического использования, а для того чтоб на нем методичиски можно было показать принцып работы, посчитать все характеристики. Учусь в Пед университете.



SAVANE, Я б не сказал, что RSA сильно сложная. А если и сложная то только из-за необходимости производить операции с большими числами, но в курсовой можно показать работу с малыми числами. Я помню даже на парах в универе, вручную шифровали и расшифровывали.

Вот теория: http://algolist.manual.ru/defence/well_known/rsa.php

Автор: Romikgy 4.10.2006, 22:33
Цитата(MaxB @  4.10.2006,  17:51 Найти цитируемый пост)
Вот теория: http://algolist.manual.ru/defence/well_known/rsa.php

вот это помощь 
Цитата(MaxB @  4.10.2006,  13:16 Найти цитируемый пост)
Вот его реализация. Тестируйте кому интересно.


http://www.forum.vingrad.ru/index.php?showtopic=113936

  

а это реклама своего продукта!

Автор: SectoR 5.10.2006, 00:08
Вот xor:
Код

void main()
{
  char *str="ABCDEFGHIKL";
  for(int i=0;i<strlen(str);i++) str[i]=str[i]^5; cout<<str;
  cout<<endl;
  for(int i=0;i<strlen(str);i++) str[i]=str[i]^5; cout<<str;

  cin.get();
}


Добавлено @ 00:11 
или вот тебе функция шифрования (она же ф-я дешифрования) однократным гаммированием (1024 битная гамма):
Код

void crypt(char *text)
{
  char gamma[1024]= {
  0x0C,0xCF,0x02,0xF3,0xC4,0xE4,0x44,0x01,0x0D,0x1E,0x9F,0xFF,0xC8,0x3A,0x44,0x2F,
  0xFC,0xD0,0x22,0x0E,0x55,0x12,0x3E,0x30,0x00,0x0f,0x01,0x30,0xE1,0x01,0x70,0x10,
  0x1A,0x11,0x00,0x02,0x13,0x1E,0x4C,0x24,0x31,0x33,0x73,0x4C,0x22,0x12,0x11,0x1A,
  0xE3,0xA0,0x0A,0xCC,0x13,0x31,0x20,0x00,0x0F,0x9C,0x2D,0x14,0x1E,0x21,0x44,0x1F,
  0x4E,0x10,0xAA,0xF3,0xE7,0x0D,0x78,0x62,0x75,0x8D,0x64,0x72,0xF8,0x25,0xE3,0x6C,
  0x89,0x45,0x85,0x21,0xE5,0xD5,0xEE,0xC5,0x23,0x21,0x95,0x21,0xCF,0xD4,0x4D,0x33,
  0x3F,0x4A,0x41,0x2C,0x65,0xE1,0x00,0x12,0x4B,0x1B,0xE7,0x32,0x8E,0x2C,0xA8,0xCD,
  0x25,0xCD,0xDB,0x32,0x17,0x54,0x2F,0xA4,0xE6,0xF5,0x3F,0x3D,0x3C,0xAA,0xCB,0x45,
  0x76,0x98,0x3F,0xBA,0x4F,0xD4,0x0A,0x05,0x6F,0x0D,0x8F,0x00,0xF0,0x47,0x50,0x1F,
  0xF4,0xDF,0x0A,0x0B,0x5F,0x31,0x68,0x8A,0x12,0x45,0x53,0x52,0x82,0x06,0x0F,0xFA,
  0xD4,0xF5,0x67,0x04,0x80,0x23,0xA5,0x0F,0x00,0x0F,0xCB,0x43,0x24,0x78,0xF0,0xC3,
  0x8F,0x9D,0x79,0x8F,0x65,0x17,0x47,0x8F,0x90,0xB3,0xFD,0xEF,0x09,0x00,0x4C,0x54,
  0x19,0x02,0x0F,0x5B,0xE6,0x9F,0x3C,0x8F,0x0D,0x56,0x33,0xEE,0x21,0x24,0x5F,0xD3,
  0x88,0x5F,0xEF,0xDE,0xFF,0x0C,0x37,0x25,0x65,0x78,0x88,0x31,0xFF,0x43,0x78,0x4D,
  0x4D,0xDE,0x5D,0x97,0x07,0x54,0x23,0xF4,0xDF,0xE6,0xCD,0x7E,0x34,0xD1,0xB7,0xC3,
  0x3D,0xED,0x41,0x32,0x84,0x65,0xC5,0x8A,0x89,0x4B,0x2D,0xF7,0x88,0x6D,0x2D,0xA5,
  0x3B,0xE6,0x22,0xD2,0xB6,0xBE,0x35,0xCF,0x86,0x00,0x23,0x4A,0xB0,0xE5,0x33,0x11,
  0x31,0xE5,0x6F,0xB7,0x8A,0xAC,0x67,0x44,0x88,0x12,0x08,0x99,0xF9,0x0A,0x0C,0xFF,
  0xBA,0xB0,0x56,0x22,0x42,0x86,0x71,0xF7,0xEB,0xCC,0x60,0xB0,0xEF,0xE7,0xB5,0xE0,
  0x0E,0xBF,0x4F,0x4B,0xF6,0xE4,0x31,0x33,0x37,0x0D,0x5B,0x5D,0x62,0x43,0x65,0x8A,
  0x8E,0x9C,0x45,0x33,0x11,0x12,0x3D,0x33,0x87,0x25,0x34,0x44,0x25,0x21,0x29,0x13,
  0x1D,0xFB,0xF1,0x19,0x00,0xFF,0x12,0x4F,0xD5,0x6D,0x2A,0x6A,0xB6,0x0C,0x34,0x31,
  0x6F,0x6F,0x6D,0x21,0x8D,0x0D,0x45,0x2A,0x22,0x24,0x28,0x0D,0xCB,0x42,0x11,0xB3,
  0xB8,0x16,0x22,0x24,0x56,0x33,0x1F,0x8D,0xCD,0xFE,0xF6,0xB7,0xD4,0xFB,0xA4,0xAA,
  0xDA,0x14,0xFD,0x24,0xB9,0x15,0x16,0x8F,0x18,0xE5,0x19,0x28,0x97,0x79,0x34,0x1A,
  0x0A,0x01,0x00,0xFF,0x5F,0xD3,0x8D,0x2A,0x4F,0x33,0x22,0x14,0x19,0x99,0x8A,0x94,
  0x16,0xFB,0x8F,0x3A,0x5B,0xC4,0x41,0x87,0x52,0xA7,0x9F,0x9C,0x14,0x56,0x65,0x7D,
  0x78,0x9B,0x1C,0x5B,0x6F,0x23,0x11,0x0A,0x6D,0xF5,0x34,0xDD,0xA0,0x4C,0xBB,0x12,
  0x6C,0x0F,0x77,0x45,0x12,0x14,0x99,0xF0,0xBF,0x4E,0xAD,0xFA,0x4E,0xC4,0xB6,0x4D,
  0xEB,0xE6,0xF5,0x66,0x74,0x19,0x13,0x44,0x79,0xEB,0xEA,0x9F,0xBC,0x7C,0x4B,0xE8,
  0x2B,0x9A,0x7C,0x8D,0x3B,0x2B,0x4D,0x3A,0x9A,0x56,0x31,0xA4,0x5B,0x55,0x31,0x35,
  0x6D,0x9B,0xC5,0x6F,0x9A,0x73,0x31,0x45,0x5A,0xE1,0x7B,0x5A,0x9D,0x75,0x4A,0x9B,
  0x5D,0xFB,0xEB,0x0A,0x0C,0x43,0x74,0x12,0xBF,0x2D,0x5A,0xE8,0x90,0x0D,0xE0,0x0F,
  0xFF,0x14,0x64,0x54,0xF0,0xB6,0xEF,0xBA,0x42,0xFB,0x34,0x4D,0x85,0x81,0x3A,0x9C,
  0xBE,0x3E,0x9A,0xBF,0xD0,0xED,0x1D,0xE2,0x0A,0x05,0xF0,0x45,0xBA,0xEB,0xAD,0x2A,
  0x22,0x98,0x21,0x42,0xC0,0xDD,0xF3,0x76,0x21,0x1B,0x0A,0xFE,0xFB,0x45,0x12,0x68,
  0x35,0xFA,0x78,0x0C,0x4C,0x0F,0xB6,0x45,0x89,0x12,0x09,0xA6,0x7B,0xEF,0xD0,0x23,
  0xE5,0xF7,0xAD,0xC7,0x0E,0x23,0x09,0x12,0x65,0x96,0x72,0xD7,0x75,0x89,0x38,0xD6,
  0xE5,0x34,0x7D,0x32,0x3E,0x9A,0xB4,0xF5,0xA5,0x43,0x95,0xDF,0xE3,0xDF,0xAE,0x5C,
  0x0C,0xFF,0xAD,0xEF,0x06,0x23,0xD4,0x9D,0x0C,0x9D,0xAD,0x34,0x12,0x21,0xD4,0xDB,
  0xBA,0xED,0xDB,0xAE,0x0D,0x40,0x35,0x54,0xE5,0xFD,0x5D,0xF4,0x0A,0xB5,0x34,0x1A,
  0xBB,0xDD,0x5A,0x8A,0x0C,0x2E,0x4A,0x56,0x21,0x3A,0x78,0xB4,0x5D,0xC5,0xEE,0x34,
  0x11,0xFF,0x13,0xA5,0x76,0x23,0x13,0xDE,0xAB,0xCD,0x45,0xDF,0x67,0x1D,0x0C,0x00,
  0x12,0xAB,0xD8,0x7C,0x9B,0x7A,0xD6,0xEC,0x8B,0x8E,0x9A,0x9C,0x78,0xDF,0x09,0xCC,
  0xB0,0xAD,0xFE,0x08,0x45,0x65,0x6C,0xBA,0xDE,0xF9,0x72,0x54,0xD7,0xA6,0x72,0x3C,
  0x79,0x0A,0x65,0x6C,0x4B,0x6A,0x5F,0xE6,0x45,0xF3,0xA6,0xD2,0xE6,0xC5,0xE0,0x24,
  0x65,0xBC,0x6A,0xD8,0xDA,0xAE,0xCB,0xAD,0xEF,0x29,0x85,0x4D,0xC4,0x3A,0xCB,0xD6,
  0xAE,0xDD,0xB0,0xCA,0x21,0x45,0x4C,0x90,0xA7,0xB4,0xB4,0x57,0x76,0xC5,0x6A,0xBB,
  0x48,0x26,0xF8,0xAF,0xFE,0xF8,0x8E,0xFD,0xBE,0x97,0xC5,0xA5,0xD5,0xCC,0xCB,0x4B,
  0x57,0xC7,0xD8,0x33,0xE3,0xD4,0xC6,0x45,0x6D,0xC6,0xC6,0xCE,0xA9,0x48,0xDC,0xB9,
  0x2B,0x8E,0xD7,0xE8,0xD9,0xAD,0x42,0x9C,0x9D,0xE9,0xC8,0x8D,0x9C,0x7B,0xCC,0xCE,
  0xDB,0x77,0x87,0xDE,0xD9,0x7C,0xB9,0xA7,0x7C,0xE9,0xDF,0x8E,0x98,0xFE,0xB9,0xF8,
  0xE9,0xDD,0xFE,0x9F,0xE9,0x9D,0xFE,0x99,0x8B,0x89,0xC9,0xA9,0x9D,0x8E,0x8E,0x79,
  0xA8,0xCA,0x99,0xAF,0x9E,0xE9,0xB9,0xEC,0x9A,0x9D,0x89,0xAF,0x89,0xE9,0xA7,0xEA,
  0x9D,0xA9,0xF9,0xA9,0xE9,0xF9,0xD8,0xC0,0x0C,0x0A,0xD9,0xE0,0xE5,0x8F,0x77,0xBB,
  0xF9,0xE8,0x78,0xD7,0xDF,0x7A,0x8E,0xE7,0xF8,0xBC,0x8A,0x8D,0xDE,0xAD,0x5D,0x0C,
  0x34,0x87,0xCB,0x27,0x8F,0xAF,0x0C,0x0A,0x99,0xCB,0xB0,0xAE,0xF0,0xAF,0xA0,0xB9,
  0x0A,0x48,0x89,0xB0,0xC9,0x0A,0x75,0x32,0x99,0x24,0x59,0xCA,0x9B,0x9A,0x74,0x9A,
  0xBA,0x3E,0x99,0xCB,0x0E,0x9B,0x9C,0x9D,0x9F,0x9A,0x9A,0xE9,0xF9,0x39,0x75,0x78,
  0x9B,0xCB,0xDB,0xE9,0x87,0x48,0x12,0x89,0x78,0xF8,0xC8,0xB8,0xBE,0x7C,0x8B,0x8B,
  0x7B,0xC7,0xDB,0xE7,0xDA,0x7F,0xF8,0xD8,0xEB,0xBA,0xBD,0xFE,0xA9,0x57,0x89,0x0C,
  0x8A,0x7A,0xC0,0xC8,0xA7,0x4B,0x0C,0xA7,0x74,0xBC,0x0B,0xBB,0xA6,0xCA,0x78,0x43,
  0x00,0xA7,0x7C,0xAB,0x34,0x7C,0x77,0xB7,0xA8,0xE9,0xF0,0xB0,0xC0,0xA9,0xD8,0xDD,
  0x40,0x61,0x84,0x5C,0xB4,0xC5,0x8B,0xC8,0xDA,0x8E,0x5F,0x45,0xAF,0x4A,0x5E,0x7D
  };

  for(unsigned int i=0; i<strlen(text); i++)
  *(text+i)^=*(gamma+i);

  Form1->Memo1->Lines->Strings[n]=text;
  n++;
}


Если пишешь в консоли, то как ты уже догадался - замени:
Код

Form1->Memo1->Lines->Strings[n]=text;    
  n++;

на
cout<<text;

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)