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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.09.2011, 12:41   #11
TinMan
Форумчанин
 
Аватар для TinMan
 
Регистрация: 05.09.2011
Сообщений: 869
По умолчанию

Ты хочешь сказать, что нужно разделить шифратор и дешифратор в отдельные проги? а текст для шифровки/расшифровки вводить вручную или из файла? Это несложно сделать.

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

То есть так:
1. Создаем текст (пусть он будет в файле).
2. Дальше две возможности:
- создать новый ключ при шифровании. В этом случае даем проге только файл, а она кроме файла с зашифрованным текстом выдает нам еще и ключ (который мы должны сохранить отдельно от шифровки).
- использовать ранее созданный ключ. Тогда проге надо дать текст и ключ, а она отдаст только файл с зашифрованным текстом.
3. При расшифровке даем зашифрованный файл и ключ, она дает расшифрованный файл.

Так годится?
Предпочитаю на "ты".
TinMan вне форума Ответить с цитированием
Старый 23.09.2011, 13:10   #12
Opex911
Пользователь
 
Регистрация: 06.10.2010
Сообщений: 13
По умолчанию

ничего разделять на проги не надо) скажем как хотелось чтобы это выглядело:
1-Вводим текст вручную,сами произвольный,перед этим выводим алфавит нормальный..
2-Перемешиваем Алфавит и шифруем наш текст в соответствии с перемешанным алфавитом.
3-далее используя перемешанный алфавит как ключ,дешифруем нашу фразу..и он нам должен вывести 26 вариантов дешифровки,пока не придет к тому-оригиналу который мы ввели,то бишь не сразу взял и дешифровал,А вывел все возможные варианты дешифровки допусти на фразу гогого закодировал как рврврв-ну на английском..а потом 26 раз перебрал..потому что 26 английских букв..как-то так...показал все варианты через строчку. или черз пробел,а потом после всего этого,т.е. ниже написал правильный..не надо файлы и прочее..просто меня попросили сделать вот дешифровку именно в таком виде, дабы был перебор всех вариантов..я пару просидел промучался..вот и сказали типа башка варит но не до конца, вот мол иди подумай и реализуй вот так-то и так-то,если не получится,то хотя б просто было круто чтобы он нам при дешифровке вывел перемешанный алфавит еще раз, и шифрованную фразу обратно вернул к оригиналу..блин наверное криво выразился,но все можно и даже нужно оставить в той же программе)
Opex911 вне форума Ответить с цитированием
Старый 23.09.2011, 13:21   #13
TinMan
Форумчанин
 
Аватар для TinMan
 
Регистрация: 05.09.2011
Сообщений: 869
По умолчанию

Я примерно понял. Но только с количеством вариантов ты сииииильно ошибся. Их гораздо больше. Сколькими способвами ты можеш переставить N предметов? Это N! (факториал). Для N=26 это будет астрономическое число:

26! = 403291461126605635584000000

Будешь сидеть перебирать? ))
Предпочитаю на "ты".
TinMan вне форума Ответить с цитированием
Старый 23.09.2011, 20:52   #14
Opex911
Пользователь
 
Регистрация: 06.10.2010
Сообщений: 13
По умолчанию

ну так вот,Куда надо ткунть строчку с дешифратором,И как в конечном итоге она должна выглядеть?я вот чего пока добиваюсь)вроде понятно ,а вроде не совсем,вот и дилема)
Opex911 вне форума Ответить с цитированием
Старый 24.09.2011, 00:52   #15
Opex911
Пользователь
 
Регистрация: 06.10.2010
Сообщений: 13
По умолчанию

ба вот я кретин,извините за самобичевание, просто только сейчас догнал что переписал не весь код программы ,невнимательно прочитал все объяснения потому и тупил..на самом деле все шикарно,ничего переделывать или доделывать не надо,моя ошибка-слепой, сам виноват
Opex911 вне форума Ответить с цитированием
Старый 24.09.2011, 06:19   #16
TinMan
Форумчанин
 
Аватар для TinMan
 
Регистрация: 05.09.2011
Сообщений: 869
По умолчанию

Цитата:
Сообщение от Opex911 Посмотреть сообщение
переписал не весь код программы
Хорошо, что разобрался )).
Предпочитаю на "ты".
TinMan вне форума Ответить с цитированием
Старый 24.09.2011, 15:52   #17
Opex911
Пользователь
 
Регистрация: 06.10.2010
Сообщений: 13
По умолчанию

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

___

или почему именно только с его помощью удается дешифровка



_____________________________
Форум - не чат!
Не надо плодить подряд несколько коротких сообщений!
Это нарушение правил...
для того, чтобы через минуту/другую дописать сообщение,
не надо создавать ещё один новый пост.
нажимайте на предыдущем кнопку "Правка"
и дописывайте в своё сообщение, что Вы хотели добавить!

Модератор.

Последний раз редактировалось Serge_Bliznykov; 24.09.2011 в 16:03.
Opex911 вне форума Ответить с цитированием
Старый 25.09.2011, 03:39   #18
TinMan
Форумчанин
 
Аватар для TinMan
 
Регистрация: 05.09.2011
Сообщений: 869
По умолчанию

Цитата:
Сообщение от Opex911 Посмотреть сообщение
правда делема появилась , для чего нужен yek, не устраивает его наличие. а как без его использования дешифровать текст используя перемешанный алфавит я чет не пойму

___

или почему именно только с его помощью удается дешифровка
Yek вычисляется по Key. В этом смысле принципиально он не нужен. Но он помогает сильно сократить и тем самым ускорить процесс дешифровки.
Кроме того, использование Yek позволяет использовать одну и ту же процедуру как для шифрования, так и для дешифрования, а не две отдельные. Это тоже экономит время и услилия.

Но все же я попробую вникнуть поглубже.. Это твой препод так сказал? Может, он имел в виду какой-то трюк, который я пока не замечаю.. хм, интересно.. Я отпишусь позже.

Цитата:

_____________________________
Форум - не чат!
Не надо плодить подряд несколько коротких сообщений!
Это нарушение правил...
для того, чтобы через минуту/другую дописать сообщение,
не надо создавать ещё один новый пост.
нажимайте на предыдущем кнопку "Правка"
и дописывайте в своё сообщение, что Вы хотели добавить!

Модератор.
Серж, я извиняюсь за оффтоп, но раз уж так вышло..
На ЭТОМ форуме я тоже пишу иногда по нескольку сообщений подряд.

Во-первых, на эту тему ничего нет в Правилах. Почему это "нарушение правил"? Покажи мне, где это в Правилах. До тех пор я не буду считать это нарушением. Также я не вижу в этом нарушения каких бы то ни было моральных норм. А если так - то зачем такой красный цвет?

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

В третьих, насколько мне известно, в движке есть возможность автоматически добавлять новый пост к старому (приписывать сзади), если он следует в течение некоторого промежутка времени (порядка часа) и не было других ответов, при этом автоматически делая заметную приписку болдом. Этот метод также позволяет избежать конфликта, который я описал выше. Но на этом форуме такая возможность НЕ ИСПОЛЬЗУЕТСЯ. Раз так - значит, это не волнует админов.. Значит, можно делать, как хочешь.

Извиняюсь, что встрял. Но на ЭТОМ форуме это действительно составляет некоторую проблему и уже не раз приходило мне на ум. И, раз уж подвернулся случай, я решил высказать свои соображения.
Предпочитаю на "ты".
TinMan вне форума Ответить с цитированием
Старый 25.09.2011, 08:34   #19
TinMan
Форумчанин
 
Аватар для TinMan
 
Регистрация: 05.09.2011
Сообщений: 869
По умолчанию

Я посмотрел еще раз на код и - да, пришел к выводу, что можно обойтись без Yek. В тот раз я не уделил достаточно внимания.. Я упростил процедуру дешифровки, она теперь проходит с Key так же быстро, как проходила с Yek. Но, тем не менее, это все, конечно, потянуло за собой создание дополнительной процедуры, DeCrypt (для однообразия я также переименовал Cryp в InCrypt). Но это не слишком большое зло, учитывая, что теперь не нужно хранить отдельный ключ для расшфровки.
Enjoy.
Код:
// encrypting with random permutations
// by TinMan, programmersforum.ru
// version 2.0
var
  Key,s: string;
  i,j,AlphaLen: integer;
  c: char;

procedure InCrypt(var s: string; k: string);
var
  i: integer;
begin
  for i:=1 to Length(s) do
    if s[i] in ['a'..'z'] then s[i]:= k[Ord(s[i])-Ord('a')+1]
end;


procedure DeCrypt(var s: string; k: string);
var
  i: integer;
begin
  for i:=1 to Length(s) do
    if s[i] in ['a'..'z'] then s[i]:= Chr(Pos(s[i],k)+Ord('a')-1)
end;


begin
  // create a random encryption key
  Key:= 'abcdefghijklmnopqrstuvwxyz';
  AlphaLen:= Length(Key);
  for i:=AlphaLen downto 2 do begin
    j:= Random(i)+1;
    c:= Key[i];
    Key[i]:= Key[j];
    Key[j]:= c
  end;
  WriteLn('Encrypyion Key: ',Key);

  // enter text here
  s:= 'now, is the winter of our discontent made glorious summer by this sun of york!';
  Writeln('Clear text:');
  Writeln(s);

  // encrypting
  InCrypt(s,Key);
  Writeln('Encrypted text:');
  Writeln(s);

  // decrypting
  DeCrypt(s,Key);
  Writeln('Decrypted text:');
  Writeln(s);

  Readln
end.
Предпочитаю на "ты".
TinMan вне форума Ответить с цитированием
Старый 25.09.2011, 14:46   #20
Opex911
Пользователь
 
Регистрация: 06.10.2010
Сообщений: 13
По умолчанию

эха,я был близок к истине,когда хотел начать описывать процедуру декрипта..,но случился неожиданный конфуз,я чет не догнал что надо было через Chr там прописать..ба,Я наверное уже надоел?ты снова выручаешь меня)спасибо огромное
Opex911 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перемешивание двухмерного массива stenl1 Общие вопросы C/C++ 10 22.11.2016 06:26
Перемешивание массива revaldo666 Общие вопросы C/C++ 6 19.01.2011 15:04
Перемешивание строк gamer123 Общие вопросы Delphi 17 25.08.2010 20:10
Перемешивание строк Черничный БД в Delphi 3 15.07.2008 14:11
Перемешивание с внутренними цепочками igrok85_85 Помощь студентам 1 02.05.2008 18:20