Метод шифрации |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
Метод шифрации |
Angelok |
Сообщение
#1
|
Гость |
Помогите с задачкой! Я начала решать следующим способом: перевожу коды в 2-ую систему и применяю xor, но у меня получаются одинаковые новые коды. Пожет кто-нибудь решал похожую?
Вот задачка: Один из методов шифрации сообщения является метод шифрования наложением гаммы. Алгоритм шифрования: берётся некоторое случайное число в диапазоне от 127 до 255 – это гамма. Код каждого символа строки заменяют кодом, получившимся в результате операции: новый код = старый код XOR гамма. Зашифруйте и дешифруйте сообщения пользователя. |
Angelok |
Сообщение
#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 |
Сообщение
#3
|
Человек Группа: Пользователи Сообщений: 1 050 Пол: Мужской Реальное имя: Станислав Репутация: 3 |
-------------------- Спасибо!
Удачи! |
Lapp |
Сообщение
#4
|
Уникум Группа: Пользователи Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
перевожу коды в 2-ую систему и применяю xor, но у меня получаются одинаковые новые коды. ... Зашифруйте и дешифруйте сообщения пользователя. Angelok, ты перемудрила. 1. Ничего не нужно переводить в двоичную систему, оно уже все в двоичной и так (машины пока работают только в двоичной системе). XOR применяй прямо к самому символу (приведя его к байтовой форме посредством Ord). 2. Не нужно различать шифровку и дешифровку. Операция, примененная один раз - шифрует. Та же самая операция, примененная с результату шифрования - дешифрует. То есть по сути тебе надо реализовать один цикл: for i:=1 to Length(s) do s[i]:=Char(Ord(s[i]) xor Gamma) С клавы нужно вводить название файла со строкой и ключ (Gamma). Вот так. -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Текстовая версия | 23.12.2024 20:52 |