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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.01.2011, 18:16   #1
Defa4ka
Пользователь
 
Аватар для Defa4ka
 
Регистрация: 10.05.2009
Сообщений: 80
Сообщение шифр Цезаря

помогите пожалуйста с такой задачей..

разработать программу в delphi реализующую шифр цезаря. поля формы должны принимать исходный текст,ключ(любого размера),и выводить закрытый(зашифрованный)текст. программа должна реализовывать процедуру шифрования и дешифрования.
Величие человека есть его способность мыслить.
Блез Паскаль
Defa4ka вне форума Ответить с цитированием
Старый 25.01.2011, 18:42   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

раздел фриланса ниже
p51x вне форума Ответить с цитированием
Старый 25.01.2011, 19:44   #3
Noor
Участник клуба
 
Аватар для Noor
 
Регистрация: 01.11.2006
Сообщений: 1,082
По умолчанию

Шифр Цезаря реализует кодирование фразы путем «сдвига» всех букв фразы на определенное число k (в оригинальном шифре Цезаря число k равнялось 3). Алфавит считается циклическим (...эюяавб...эюяабв...).

Код:
//Шифрование Цезаря
function Cesar_Crypt(s:string):string;
const
  SizeA = 33; //Размер алфавита
  RusA = 'абвгдеёжзийклмнопрстуфхцчшщъыьэюя'; //Алфавит
var i, P :integer;
    temp:string;
begin
s:=AnsiLowerCase(s);
temp:='';
//удаление символов сообщения, не входящих в наш алфавит
for i := 1 to length(s) do if pos(s[i],RusA)<>0 then temp:=temp+s[i];
s:=temp;
for i:=1 to length(s) do
  begin
  P:=pos(s[i],RusA)+3;
  if P>SizeA then P:=P-SizeA;
  Result:=Result+RusA[P];
  end;
end;

//Дешифрование Цезаря
function Cesar_DeCrypt(s:string):string;
const
  SizeA = 33; //Размер алфавита
  RusA = 'абвгдеёжзийклмнопрстуфхцчшщъыьэюя'; //Алфавит
var i, P :integer;
    temp:string;
begin
s:=AnsiLowerCase(s);
temp:='';
//удаление символов сообщения, не входящих в наш алфавит
for i := 1 to length(s) do if pos(s[i],RusA)<>0 then temp:=temp+s[i];
s:=temp;
for i:=1 to length(s) do
  begin
  P:=pos(s[i],RusA)-3;
  if P<=0 then P:=P+SizeA;
  Result:=Result+RusA[P];
  end;
end;
Как применить, думаю, разберетесь !!

Последний раз редактировалось Noor; 25.01.2011 в 19:46.
Noor вне форума Ответить с цитированием
Старый 26.01.2011, 00:20   #4
Defa4ka
Пользователь
 
Аватар для Defa4ka
 
Регистрация: 10.05.2009
Сообщений: 80
По умолчанию вот...(

шифрование вродь получается.. а расшифровать - нет((((( кто знает -помогите..(
Код:
const alfa:array[0..65] of char = ('А','Б','В','Г','Д','Е','Ё','Ж','З','И','Й', 'К','Л','М','Н','О','П','Р','С','Т','У','Ф','Х','Ц','Ч','Ш','Щ','Ъ','Ы','Ь','Э','Ю','Я', 'а','б','в','г','д','е','ё','ж','з','и','й','к','л','м','н','о','п','р','с','т','у','ф','х','ц','ч','ш','щ','ъ','ы', 'ь','э','ю','я');

var
  Form1: TForm1;
     a:array[0..65] of char;
  i, j, k: integer;
  s, s2:string;

implementation

{$R *.dfm}



procedure TForm1.Button1Click(Sender: TObject);
begin
  For i:=0 to 65 do
  begin                        
    a[i]:= alfa[(i+1) mod 66];
  end;

   // шифр
    k := StrToInt(Edit1.Text);
    s := Memo1.Lines.Text;
    for i := 1 to length(s) do
      for j := 0 to 65 do
        if s[i] = a[j] then s2 := s2+a[(j+(k-1)) mod 66];
    Memo2.Lines.Text := s2;
    s2 := '';
  end;

procedure TForm1.Button2Click(Sender: TObject);
begin
// дешифр
    k := StrToInt(Edit1.Text);
    s := Memo1.Lines.Text;
    for i := 1 to length(s) do
      for j := 0 to 65 do
        if s[i] = a[j] then s2 := s2+a[(j-(k-1)) mod 66];
    Memo2.Lines.Text := s2;
    s2 := '';
  end;
Величие человека есть его способность мыслить.
Блез Паскаль
Defa4ka вне форума Ответить с цитированием
Старый 29.01.2011, 01:13   #5
Noor
Участник клуба
 
Аватар для Noor
 
Регистрация: 01.11.2006
Сообщений: 1,082
По умолчанию

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

Последний раз редактировалось Noor; 29.01.2011 в 01:15.
Noor вне форума Ответить с цитированием
Старый 23.10.2011, 13:48   #6
BioWolf
Новичок
Джуниор
 
Регистрация: 22.10.2011
Сообщений: 2
По умолчанию

Noor можеш ешо раз кинуть ссылку???
BioWolf вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Шифр цезаря (не работает) Айдар Помощь студентам 3 21.06.2010 11:15
шифр цезаря с кодовым словом и сдвигом Dark Energy Общие вопросы Delphi 0 28.05.2010 11:32
Шифр Цезаря Goracio Помощь студентам 1 19.04.2010 14:53
Шифр Цезаря Jasper92 Помощь студентам 3 02.12.2009 18:47
реализация шифрования. шифр Цезаря + Хэш-функция BlackThornGreed Помощь студентам 0 07.06.2009 10:21