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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.11.2012, 22:38   #1
вася радугов
Форумчанин
 
Регистрация: 09.04.2011
Сообщений: 134
По умолчанию Шифрование текстового файла на Delphi

Помогите написать программу:
вводятся данные ФИО, Дата рождения,Образование. Затем при нажатии на кнопку сохранить эти данные записываются в файл. При записи в файл все введённые данные шифруются алгоритмом простой перестановки, замены или xor(без разницы). При открытии файла все данные должны декодироваться.
вася радугов вне форума Ответить с цитированием
Старый 20.11.2012, 22:57   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А что именно не получается?
Вот когда-то тут писал это:
Код:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    ListBox1: TListBox;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
 procedure OpenSaveListAndXOR(filea:string;list:Tstrings;XORkey:byte;Open:boolean=true);

implementation

{$R *.dfm}
  //********* PROCEDURE**********
procedure OpenSaveListAndXOR(filea:string;list:Tstrings;XORkey:byte;Open:boolean=true);
var sf:TFileStream;
 i:integer;b:byte;  s:string;
begin
if not open then begin
    sf:=TFileStream.Create(filea,fmcreate);
     //********* FOR ******************
     for  i:=0  to list.Count-1  do
     begin
       b:=byte(list.CommaText[i]) xor XORkey;
       sf.Write(b,sizeof(i));
     end;
     //******* END FOR ****************{}
end else begin
   sf:=TFileStream.Create(filea,fmOpenRead);
     //********* FOR ******************
     for  i:=0  to sf.Size  do
     begin
       sf.Read(b,sizeof(b));
       s:=s+chr(b xor XORkey);
       //b:=byte(list.Text[i]) xor XORkey;
//       sf.Write(b,sizeof(i));
     end;
     //******* END FOR ****************{}
end;
sf.Free;
end;
//********* END PROCEDURE******* {}


procedure TForm1.Button1Click(Sender: TObject);

begin
OpenSaveListAndXOR('c:\temp\qq',ListBox1.Items,4,false);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
ListBox1.Clear;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
OpenSaveListAndXOR('c:\temp\qq',ListBox1.Items,4);
end;

end.
Шифровать файл XORом должна
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 20.11.2012, 23:13   #3
вася радугов
Форумчанин
 
Регистрация: 09.04.2011
Сообщений: 134
По умолчанию

извините, не очень силен в программировании, а в этой строке мы выбираем файл ,который будем шифровать?
Код:
OpenSaveListAndXOR('c:\temp\qq',ListBox1.Items,4);
вася радугов вне форума Ответить с цитированием
Старый 20.11.2012, 23:25   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Да. Если писать
Код:
OpenSaveListAndXOR('c:\temp\qq',ListBox1.Items,4,false);
то файл будет создан из листбокса и защифрован ключем 4
Если же false заменить на true или совсем не писать, файл будет считан и расшифрован.
Одна только ремарка: там где файл расшифровывается в переменку S в конце за циклом нужно что-то типа:
Код:
List.Text:=s;
Ато получается что считка в никуда происходит. Прога просто видать недописанная, я ее из сусеков наскреб.
Сюда же: list.CommaText замени на list.Tеxt от греха подальше.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 20.11.2012, 23:43   #5
вася радугов
Форумчанин
 
Регистрация: 09.04.2011
Сообщений: 134
По умолчанию

а можно сделать шифрование готового текстового файла?
вася радугов вне форума Ответить с цитированием
Старый 21.11.2012, 00:09   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Почему нет?
Код:
   s:='';
   With TFileStream.Create(filea,fmOpenRead) do begin
     SetLength(s,size);
     Read(s[1],Length(s));
     for  i:=1  to length(s)  do s[i]:=chr(s[i] xor XORkey);
     free;
   end;

   with TFileStream.Create(filea,fmcreate) do begin
       Write(s[1],length(s));
     free;
   end;
   s:='';
Учитывая что S стоит определить как AnsiString;
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Lazarus\Delphi] Использование информации из текстового файла.. hen Lazarus, Free Pascal, CodeTyphon 1 19.05.2010 22:44
Связь Delphi и текстового файла TMAX Помощь студентам 0 06.12.2009 17:22
как запретить изменение текстового файла на delphi BuT@JL Помощь студентам 1 28.02.2009 05:35
Шифрование текстового файла pomoshnic Паскаль, Turbo Pascal, PascalABC.NET 5 14.02.2009 18:21
Delphi Редактирование текстового файла Starscream Общие вопросы Delphi 11 18.02.2008 17:15