Итак хочу рассказать о своей работе AS ImageDecoder. Смысле программы очень простой, вы выбираете графическое изображение, составляете список информации, затем жмете кнопку «RUN» и все, все ваши данные уже в этом графическом файле, и никто не знает в каком, кроме Вас, а если еще и зашифруете их, то есть поставите галочку «Шифровать данные», то их вообще будет сложно найти. Можно будет найти только лишь с помощью этой программы и зная, где шифруется информация (в каком файле).

За основу был взят класс типа данных TFileStream. Смысл его, что я гружу в переменную данного типа все информацию файла и потом просто напросто дописываю туда нужную информацию, да всего ничего, не правда ли? легко все. А графические изображение при добавлении в них новой информации свою структуру не меняют и можно их открывать и дальше. Сейчас я Вам покажу как можно очень легко записать в графический файл информацию, а потом с него считать ее. На основе этого Вы сможете сделать свой Decoder, только потом прикрутить еще шифрование данных (об этом поговорим в других статьях).
Итак для начала нам надо определиться со структурой, которую мы будем записывать в наш графический файл будем записывать структуру такого плана:

  • имя (строковый тип данных) — name
  • пароль (строковый тип данных) — pass

Так теперь переведем ее на язык, который воспринимает Delphi

Type
TDecoder=record
name:string[100];
pass:string[100];
end;

Итак структура у нас готова. Дальше мы просто напросто пишем вот такой вот код на Button1Click , да не забудьте кинуть на форму компонент TOpenDialog, чтобы открывать файл.

procedure TForm1.Button1Click(Sender: TObject);
var
FileDecoder:TFileStream;
Decoder:TDecoder;
begin
try
if OpenDialog1.Execute then
begin
FileDecoder:=TFileStream.Create(OpenDialog1.FileName,fmOpenReadWrite   or fmShareDenyNone);
Decoder.name:='Vkontakte.ru+devdelphi';
Decoder.pass:='123123';
FileDecoder.Seek(0,soFromEnd);
FileDecoder.WriteBuffer(Decoder,SizeOf(TDecoder));
FileDecoder.Free;
end;
except
on e:Exception do
FileDecoder.Free;
end;
end;

Здесь мы открываем файл с помощью TFileStream, затем заполняем нашу запись, ставим указатель на конец файл с помощью Seek и записываем в файл с помощью WriteBuffer, а затем разрушаем переменную с помощью Free.

Запись вроде бы прошла у меня без ошибок, теперь пишем на Button2Click чтение из файла, код будет примерно такой:

procedure TForm1.Button2Click(Sender: TObject);
var
FileDecoder:TFileStream;
Decoder:TDecoder;
begin
try
if OpenDialog1.Execute then
begin
FileDecoder:=TFileStream.Create(OpenDialog1.FileName,fmOpenReadWrite or fmShareDenyNone);
FileDecoder.Seek(-SizeOf(Decoder),soFromEnd);
FileDecoder.ReadBuffer(Decoder,SizeOf(TDecoder));
if Pos('devdelphi',Decoder.name)<>0 then
begin
Delete(Decoder.name,pos('+',Decoder.name),length(Decoder.name));
ShowMessage('name - '+Decoder.name+' pass - '+Decoder.pass);
end
else
Application.MessageBox('Not','Error',MB_OK);
FileDecoder.Free;
end;
except
on e:Exception do
begin
Application.MessageBox('Not','Error',MB_OK);
FileDecoder.Free;
end;
end;
end;

Здесь кода уже чуток побольше. Ну здесь почти тоже самое только устанавливаем указатель на размер нашей записи, и считываем информацию с помощью ReadBuffer. Я при записи нашей структуры, дописывал в поле name — devdelphi, чтобы потом разделить данные, то есть у нас в файле может быть блок размером равный нашей структуре и он конечно выведет нам разные «кракозябры» и иероглифы, так что просто ввожу какое-то уникальное слово, вот так.

Вот теперь можете уже писать свой шифратор данных в файл, а в следующем уроке рассмотрим шифрование данных, чтобы Вы смогли написать надежный шифратор.

Кстати, хочу сказать, что самый лучший праздник получается на теплоходе, а особенно в хороший летний или весенний день. Кроме этого, очень хорошие свадьбы на теплоходе получаются. Более подробно об аренде теплохода в Москве можно узнать на сайте http://www.teploxodik.ru/

Исходники можно скачать тут

Скачать AS ImageDecoder

Автор статьи - Andrey53

Метки: , , , , ,




К записи “AS ImageDecoder. Работа с TFileStream” оставлено комментариев: 6.

  1. Andrey:

    Mne ochen nravitsya, vc` zdorovo!!!

  2. яка:

    Чем объяснить, то что при записи в файл добавляется 202 байта, хотя структура объявлена только на 200 байтов?

  3. яка:

    Пардон, здравствуйте) очень красивый сайтоблог, он на вордпрессе сделан?

  4. яка:

    Чем объяснить, то что при записи в файл добавляется 202 байта, хотя структура объявлена только на 200 байтов?
    (пишу ещё раз так как предыдущее сообщение куда-то «пропало»)

    • Andrey53:

      комментарий никуда не пропадает, а просто ждет одобрения, так Вы же не забывайте, что тип string отводит по 1 байту для хранения общей длинны строки

Оставить комментарий

Вы можете использовать следующие теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

*