|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
13.09.2010, 21:36 | #1 |
Форумчанин
Регистрация: 27.09.2009
Сообщений: 153
|
Шифрование файла алфавитом
Задан массив, элементами которого являются буквы англоязычного алфавита. Получить новый
массив, в котором буквы перестановлены случайным образом, и используя его зашифровать текстовый файл. Буквы англоязычного алфавита рассматриваем как массив. Обозначим этот массив как A(52). Каждый элемент массива – A(I). Где I – это номер символа в массиве, I изменяется от 1 до 52. A(I)=''a,b,c,d,e..." Перемешаем исходный алфавит и получим например B(I)=''d,f,g,h,o..." Используем массив B(52) как ключ для шифрования. Текст для шифрования возьмем произвольно, например, «студент». Определяем номер первой буквы текста в исходном алфавите: a=A(1). В зашифрованный файл первой буквой записываем букву с тем же номером из перемешанного алфавита, а то есть B(1)=A(1)=d То есть например в этом случае последовательность abd шифруется как dfh Исходный код приведён ниже.Только проблема в том что шифруется только первый символ текста из файла.(Чтобы записать текст надо создать файл file1.txt на диске c).Возможно ошибка где то в последнем вложенном цикле . const alh1:array [0..51] of char=('a','b','c','d','e','f','g',' h','i','j','k', 'l', 'm','n','o','p','q','r','s','t','u' ,'v','w','x','y ','z','A','B','C','D' ,'E','F','G','H','I','J','K','L','M ','N','O','P',' Q','R', 'S','T','U','V','W','X','Y','Z'); var d,i,km,mk,j,dlina,nk:integer; f11:array [0..50] of char; f1:text; alh2:array [0..53] of char; newtext:array [0..250] of char; text:array [0..50] of string; buf:char; begin Randomize; while i<52 do begin alh2[i]:=alh1[i]; i:=i+1; end; for i:=1 to 1 do writeln(alh1); while i<52 do begin km:=i; mk:=random(51); buf:=alh2[km]; alh2[km]:= alh2[mk]; alh2[mk]:=buf; i:=i+1; end; for i:=1 to 1 do begin writeln(alh2); end; assign(f1,'c:/file1.txt'); reset(f1); readln(f1,f11); writeln(f11); dlina:=length(f11); while j<=dlina do begin while nk<=52 do begin if f11[j]=alh1[nk] then begin newtext[j]:=alh2[nk]; end; nk:=nk+1; end; j:=j+1; end; writeln(newtext); readln; end. |
13.09.2010, 22:13 | #2 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
код жуткий...
из того, что бросилось в глаза! 1) почему массив Alh1 от 0 до 51, а массив Alh2 от 0 до 53?! 2) при таком описании f11:array [0..50] of char; вот эта строчка dlina:=length(f11); ВСЕГДА вернёт 51 (ибо такова длина Вашего массива символов!!) Вместо этого используйте обычную var f11 : string; главная ошибка. В цикле Вы забываете сбрасывать nk - поиск всегда начинается со следующего символа (от найденного)!! на надо так: Код:
Мой Вам совет на будущее! Не забывайте обнулять переменные перед их использованием. p.s. код надо обрамлять в тэги [СODE] ... тут Ваш код [/CODE] это можно сделать с помощью кнопочки с решёточкой. вот, примерно так: Код:
Последний раз редактировалось Serge_Bliznykov; 13.09.2010 в 22:17. |
13.09.2010, 22:50 | #3 |
Форумчанин
Регистрация: 27.09.2009
Сообщений: 153
|
Спасибо за помощь.Но есть ещё один вопрос.Почему вот при таком коде не идёт запись зашифрованного текста файл file2.txt создаётся пустым.
Код:
Последний раз редактировалось 0479; 13.09.2010 в 23:08. |
13.09.2010, 23:11 | #4 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
обратите внимание, после чтения файла f1 появилась команда Close(f1) - обратили?
Так вот, ОБЯЗАТЕЛЬНО нужно закрывать открытый Вами файл. т.е. после записи в файл f2 закройте его: Код:
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Шифрование файла (Assembler) | phantom4eg | Фриланс | 3 | 12.04.2010 10:50 |
шифрование файла (Assembler) | phantom4eg | Помощь студентам | 2 | 10.04.2010 16:36 |
Шифрование файла. | dip | Помощь студентам | 1 | 04.12.2009 10:17 |
шифрование и дешифрование файла | Анастасия123456789 | Помощь студентам | 1 | 05.05.2009 15:47 |
Шифрование текстового файла | pomoshnic | Паскаль, Turbo Pascal, PascalABC.NET | 5 | 14.02.2009 18:21 |