IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Метод шифрации
Angelok
сообщение 24.11.2007 19:58
Сообщение #1


Гость






Помогите с задачкой! Я начала решать следующим способом: перевожу коды в 2-ую систему и применяю xor, но у меня получаются одинаковые новые коды. Пожет кто-нибудь решал похожую?
Вот задачка: Один из методов шифрации сообщения является метод шифрования наложением гаммы. Алгоритм шифрования: берётся некоторое случайное число в диапазоне от 127 до 255 – это гамма. Код каждого символа строки заменяют кодом, получившимся в результате операции: новый код = старый код XOR гамма. Зашифруйте и дешифруйте сообщения пользователя.
 К началу страницы 
+ Ответить 
Angelok
сообщение 24.11.2007 20:18
Сообщение #2


Гость






Вот что я сделала:
Код
Uses crt;
Var a,b,st,st1,a1,a2:string;
      x,i,k,t,r,y,cod,q: integer;
Begin
       Clrscr;
       Randomize;
       Writeln ('Введите строку');
       Readln(a);
       x:=127+random(128);
       Repeat
                  t:=x mod 2;
                  x:=x div 2;
                 str(t;st);
                 b:=b+st;
      Until x=0;
      Writeln(''Выберите что нужно сделать со строкой');        
      Writeln('1: зашифровать');
      Writeln('2: дешифровать');
      Reapeat
      readln(k);
      Until (k=1) or (k=2);
       q:=1;
       case k of
             1: While q> length(a) do
                  Begin
                          t:=ord(a[i]);
                          a1:='';
                          a2:='';
                              Reapeat
                                    r:=t mod 2;
                                   t:=t div 2;
                                   str(r,st1);
                                   a1:=st1+a1;
                             Until  t=0;
                             For  i:=1 to length(a1) do
                                  begin
                                          val(a1[i], x, cod);
                                           val(b[i],y,cod);
                                          str((x xor y), st);
                                          a2:=a2+st;
                                  end;
                            For i:=length(a2) downto 1 do
                             Write(a2[i]);
                             Write(' ');
                             q:=q+1;
                  end;
  2: begin
      end;
   Readkey;
end.
 К началу страницы 
+ Ответить 
compiler
сообщение 24.11.2007 21:31
Сообщение #3


Человек
*****

Группа: Пользователи
Сообщений: 1 050
Пол: Мужской
Реальное имя: Станислав

Репутация: -  3  +


решение тут (шифруется/дешифруется файл)





--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 25.11.2007 2:33
Сообщение #4


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(Angelok @ 24.11.2007 19:58) *
перевожу коды в 2-ую систему и применяю xor, но у меня получаются одинаковые новые коды.
...
Зашифруйте и дешифруйте сообщения пользователя.

Angelok, ты перемудрила.
1. Ничего не нужно переводить в двоичную систему, оно уже все в двоичной и так (машины пока работают только в двоичной системе). XOR применяй прямо к самому символу (приведя его к байтовой форме посредством Ord).
2. Не нужно различать шифровку и дешифровку. Операция, примененная один раз - шифрует. Та же самая операция, примененная с результату шифрования - дешифрует.
То есть по сути тебе надо реализовать один цикл:
for i:=1 to Length(s) do s[i]:=Char(Ord(s[i]) xor Gamma)

С клавы нужно вводить название файла со строкой и ключ (Gamma).
Вот так.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.07.2025 3:02
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"