Новые сообщения · Правила  
Страница 1 из 11
Модератор форума: Berestovskiy 
Форум ПРОГРАММИСТОВ » ПРОГРАММИРОВАНИЕ » Паскаль » Шифр Гронсфельда (Помогите доработать программу плз))
Шифр Гронсфельда
Метод шифрования:Сама схема очень напоминает шифр Цезаря.Каждой букве соответствует некая цифра,это цифра будет показывать на сколько позиций будет происходить смещение алфавита для каждой конкретной буквы.Обратное преобразование происходит подобным образом,только каждый раз алфавит сдвигаем в другую сторону.
Пример:При ключе шифрования к=1254 слово
"information" преобразуется в
I N F O R M A T I O N
1 2 5 4 1 2 5 4 1 2 5
I P K S R O F X I Q S
т.е шифруется как ipksrofxiqs

Текст программы примерно следущий,но препод требует чтобы было создано 2 кнопки-шифровать и дешифровать и вообще чтобы все было красиво и с подписями.Помогите чем можете,текст проги примерно следущий:
Program Shifr_Gronsfeld;
Uses crt;
Const n=5;
Type cifra=0..9;
Var i,k:integer; kod:array[0..n-1] of cifra; a:char;

10
function Shifr(a:char; c:cifra):char;
var i:integer;
begin Shifr:=chr(ord('А')+(ord(a)-ord('А')+c) mod 32)
end;{Shifr}
Begin
Textbackground(7); Textcolor(blue); Clrscr;
write('Введите ключ для шифра Гронсфельда: '); readln(k);
for i:=n-1 downto 0 do
begin kod[i]:=k mod 10; k:=k div 10 end;
writeln('Введите текст:');
i:=0;
while not eoln do
begin
read(a);
if a in ['А'..'Я']
then begin write(Shifr(a,kod[i mod n]));inc(i) end
else write(a);
end;
readkey
End.{Shifr_Gronsfeld}

Всё надо сделать в TP 7.0
Заранее огромное спасибо

1 | Автор: zloygeniy | 2009-04-06, 15:50   |  Репутация: [ + 0 ]
програмка шифрующая текст
program Kriptograf;
function Shifr ( Kod, K : string ): string;
var i,t,d : integer;
begin for i:=1 to length (Kod) do begin
d:=ord (Kod[i]);
t:= (ord(Kod[i]) + (ord (K [(pred(i) mod length(K)) + 1]) - ord('0')));

if t>=256 then dec (T,256);
Kod[i]:=Chr(t);
end;
Shifr := Kod;
end;

var
a,k,s:string;

Begin

writeln('vvedite slovo');
readln(a);
writeln('vvedite klu4');
readln(k);
s:= Shifr(a,k);
writeln('s= ', Shifr (a, k));
readln;
End.

расшифровывающая
program Kriptograf;

function DeShifr (DeKod,K:string):string;
var i,t:integer;
begin
for i:=1 to length(DeKod) do begin
t:=(Ord(DeKod[i])-(ord(K[(pred(i) mod length(K))+1])-ord('0')));

if t<0 then Inc(t,256);
DeKod[i]:=Chr(t);
end;
DeShifr:=DeKod;
end;

var
a,k,s:string;

Begin
writeln('vvedite zashifrovannui text');
readln(a);
writeln('vvedite klu4');
readln(k);
s:= DeShifr(a ,k );

writeln('s= ', DeShifr (a,k));
readln;
End.

помог сайт http://volvo71.narod.ru/faq_folder/code_text.htm
=)


festina lente
2 | Автор: lennore | 2009-04-12, 20:15   |  Репутация: [ + 1 ]
biggrin Пасибо)))

Добавлено (21.04.2009, 16:50)
---------------------------------------------
Но она все равно не так вычисляет (((
Все работает...
Но там где в ключе "1" она не должна менять букву,а она меняет(((
Т.е слово info при ключе 1254 =jpks,а должно быть Ipks.,.
Как это исправить???

3 | Автор: zloygeniy | 2009-04-21, 16:50   |  Репутация: [ + 0 ]
хм... дк вот она ж и прибавляет к номеру буквы "i" в алфавите 1 и получаем букву "J"
"i" у нас под номером 9 в английском алфавите и получаем буковку под номерком 10 то есть "j"... помоему так и надо, или я чтото не очень понимаю в этом шрифте huh )))


festina lente
4 | Автор: lennore | 2009-04-27, 08:07   |  Репутация: [ + 1 ]
Не...всё правильно,но при k=1/// Не должна изменяться буква...
Как это в паскале сделать???
5 | Автор: zloygeniy | 2009-04-29, 15:15   |  Репутация: [ + 0 ]
Здравствуйте уважаемые форумчане! У меня беда.. Горит курсовик.. И попалсчя метод Гронсфельда.. Что с ним делать не знаю..помогите.. ВОт что надо сделать
Задача: Составить программу на языке программирования Delphi, которая позволит закодировать исходный текст шифром Гронсфельда и выполнить обратное шифрование (кодирование или декодирование определяется пользователем программы). Исходный текст должен вводиться пользователем с клавиатуры, а также пользователь может шифровать текст, который будет находиться в файле. Шифруемый текст может быть на русском (или английском) языке. Ключ для шифрования должен храниться в текстовом файле.

sad вот мой также ящик..CLEARSKY1986 СОБАКА ЯНДЕКС ТОЧКА РУ кто здесь откликнится*

Добавлено (02.06.10, 11:41)
---------------------------------------------
И ЕСЛИ НЕ ТРУДНО расписать подробно что да куда и зачем sad

Добавлено (02.06.10, 11:57)
---------------------------------------------
и если можно чс подробным правильным описанием что брали и куда сували sad

6 | Автор: Андриан | 2010-06-02, 11:57 | Изменено: Андриан - Ср, 2010-06-02, 11:40   |  Репутация: [ + 0 ]
Форум ПРОГРАММИСТОВ » ПРОГРАММИРОВАНИЕ » Паскаль » Шифр Гронсфельда (Помогите доработать программу плз))
Страница 1 из 11
Поиск: