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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.02.2012, 20:00   #1
Flaina
 
Регистрация: 09.02.2012
Сообщений: 4
Вопрос Аффинная система подстановок Цезаря

Здравствуйте, посмотрела старые темы, нашла алгоритм http://programmersforum.ru/showthread.php?t=16468
Но мне нужно проводить все махинации с входным и выходным файлом.
И еще, не учитывать пробел (чтобы можно было зашифровать текст и все слова были разделены пробелами)
Есть код, но он, как оно понятно не очень рабочий.
Прошу помочь.
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls, StdCtrls, ExtCtrls, Math;

type
  TForm1 = class(TForm)
    gbInputFile: TGroupBox;
    gbKey: TGroupBox;
    gbOutputFile: TGroupBox;
    gbControlPanel: TGroupBox;
    edtInputFile: TEdit;
    btnInputFile: TButton;
    edtOutputFile: TEdit;
    btnOutputFile: TButton;
    btnStart: TButton;
    btnQuit: TButton;
    OpenDialog1: TOpenDialog;
    SaveDialog1: TSaveDialog;
    lblInputFile: TLabel;
    edtKey: TEdit;
    lblKey: TLabel;
    lblOutputFile: TLabel;
    UpDown1: TUpDown;
    GroupBox1: TGroupBox;
    EdtKey1: TEdit;
    UpDown2: TUpDown;
    Label1: TLabel;
    procedure btnInputFileClick(Sender: TObject);
    procedure btnOutputFileClick(Sender: TObject);
    procedure btnQuitClick(Sender: TObject);
    procedure btnStartClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

{Функция определения наибольшего общего делителя}
function nod( a, b: longint): longint;
begin
   while (a <> 0) and (b <> 0) do
     if a >= b then
       a:= a mod b  //остаток от деления "а" на "б"
     else
       b:= b mod a; //остаток от деления "б" на "а"
   nod:= a + b;
end;

procedure TForm1.btnInputFileClick(Sender: TObject);
begin
 If OpenDialog1.Execute Then edtInputFile.Text := OpenDialog1.FileName;
end;

procedure TForm1.btnOutputFileClick(Sender: TObject);
begin
   If SaveDialog1.Execute Then edtOutputFile.Text := SaveDialog1.FileName;
end;

procedure TForm1.btnQuitClick(Sender: TObject);
var s, s1, s2:String;
   m, k:integer;
    inFile, outFile : File Of Char;
    a,b : Byte;
    Symbol : Char;
begin
   s := 'qwertyuiopasdfghjkl;zxcvbnm,.лпдралвфжлпавыолфоал0123456789';
   a := 3;
   b := 5;
   m := 256;  // a & m взаимно простые
   AssignFile(inFile, edtInputFile.Text);
  AssignFile(outFile, edtOutputFile.Text);
  // Связываем дескрипторы с файлами

  // обратно
   While Not(EOF(inFile)) Do
  Begin
    Read(inFile, Symbol);
      k := ord(Symbol);
      while (k - b) mod a > 0 do k := k+m;
      Symbol := chr((k - b) div a);
      Write(outFile, Symbol);
   end;

end;

procedure TForm1.btnStartClick(Sender: TObject);
   var s, s1:String;
   m, i, k:integer;
    inFile, outFile : File Of Char;
    a,b : Byte;
    Symbol : Char;
    j : integer;
begin
   s := 'qwertyuiopasdfghjkl;zxcvbnm,.лпдралвфжлпавыолфоал0123456789';
   m := 256;  // a & m взаимно простые
AssignFile(inFile, edtInputFile.Text);
  AssignFile(outFile, edtOutputFile.Text);
  // Связываем дескрипторы с файлами

  Try
    a:= StrToInt(edtKey.Text);
    b:= StrToInt(edtKey1.Text);
    Reset(inFile);
    Rewrite(outFile);
  Except
Application.MessageBox('Не удалось обработать входные параметры.  Проверьте правильность введенных значений и повторите попытку','Ошибка!');
    	     Exit;
  	  End;


   // шифрование  s --> s1
   s1 := s;
   While Not(EOF(inFile)) Do
  Begin
    Read(inFile, Symbol);
      Symbol := chr( (ord(Symbol)*a+b) mod m);
      Write(outFile, Symbol);
   end;
   end;



end.
Заранее спасибо!
Flaina вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
аффинная криптосистема, дешифрация Irenka Помощь студентам 1 04.06.2010 17:19
Произведение подстановок (Pascal) Docen Помощь студентам 6 07.04.2010 17:43
Мастер подстановок в БД 2003г. оля3105 Помощь студентам 0 02.03.2010 15:56
Аффинная система подстановок Цезаря Karyuudo Помощь студентам 12 10.02.2010 19:26
Проблема со столбцом подстановок. Hellell Microsoft Office Access 1 08.01.2008 02:13