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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.06.2011, 10:34   #1
AET
Пользователь
 
Регистрация: 29.02.2008
Сообщений: 60
По умолчанию шифруем файл

есть 2 файла 1 ключ а 2-ой сам файл который надо шифровать в xor как пустить файл ключа по циклу пока не закончится сам файл исходный
AET вне форума Ответить с цитированием
Старый 27.06.2011, 10:42   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

а в чём, собственно проблема то?!

примерно так:
Код:
  k := 1;
  for i := 1 to SizeArray do
    begin
      sResult[i] := sResult[i] XOR key[k];
      inc(k);
      if k>SizeKey then k := 1;
    end;
key - это буфер, куда прочитать полностью файл ключа....
Serge_Bliznykov вне форума Ответить с цитированием
Старый 27.06.2011, 11:09   #3
AET
Пользователь
 
Регистрация: 29.02.2008
Сообщений: 60
По умолчанию

чтото никак
Код:
procedure TForm2.Button1Click(Sender: TObject);
var key,f2,f3 :File of byte ;
buf1,buf2,buf3 : byte;
FName3: string;
SizeArray,k:integer;
begin
 AssignFile(key,OpenDialog1.FileName);
 AssignFile(f2,OpenDialog2.FileName);
 Savedialog1.Execute ;
 AssignFile(f3,SaveDialog1.FileName);
 reset(key);
 reset(f2);
 SizeArray:=Filesize(f2);
 rewrite(f3);
while not eof(f2) do
begin
read (f2,buf2);
read (key,buf1);
buf3:= buf2 xor buf1;
write (f3,buf3);
end;
 closefile(key);
 closefile(f2);
 closefile(f3);

end;
AET вне форума Ответить с цитированием
Старый 27.06.2011, 11:36   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

ну вы же не используете структуры... совсем..
читаете побайтно.. да ещё и используете древний как мир file of byte что такое массивы (особенно динамические) вы не знаете?
А для чтения/записи ГОРАЗДО лучше воспользоваться компонентом TFileStream ...

впрочем, хозяин - барин.... Хотите получить тормозную программу - воля Ваша...

вот так тогда:
Код:
var key, f2, f3: file of byte;
  buf1, buf2, buf3: byte;
  k: integer;
begin
  AssignFile(key, OpenDialog1.FileName);
  AssignFile(f2,  OpenDialog2.FileName);
  if  Savedialog1.Execute then begin
    AssignFile(f3, SaveDialog1.FileName);
    reset(key);
    reset(f2);
    rewrite(f3);
    while not eof(f2) do
    begin
      read(f2, buf2);
      read(key, buf1);
      buf3 := buf2 xor buf1;
      write(f3, buf3);
      if eof(key) then Seek(key, 0);
    end;
    closefile(key);
    closefile(f2);
    closefile(f3);
  end;
end;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 27.06.2011, 12:05   #5
AET
Пользователь
 
Регистрация: 29.02.2008
Сообщений: 60
По умолчанию

все работает. шифруем дальше методом таблицы есть файл из 256 байта и исходный файл. из исходного файла считываем байт по его НЕХ значению переходим в таблицу и заменяеми их. у кого какие предложения

Последний раз редактировалось AET; 27.06.2011 в 12:50.
AET вне форума Ответить с цитированием
Старый 27.06.2011, 14:12   #6
AET
Пользователь
 
Регистрация: 29.02.2008
Сообщений: 60
По умолчанию

Код:
procedure TForm2.Button3Click(Sender: TObject);
var Streaml, Stream2, Stream3: TFileStream;
begin
if  Savedialog1.Execute then try
  Streaml := TFileStream.Create(OpenDialog1.FileName, fmOpenRead);
  Stream2 := TFileStream.Create(OpenDialog2.FileName, fmOpenRead);
  Stream3 := TFileStream.Create(Savedialog1.FileName, fmCreate);
finally

Streaml.Free;
Stream2.Free;
Stream3.Free;

end;
end;
как дальше мне сделать можете подскозать
ни как не смог разобратся зделал так
Код:
procedure TForm2.Button4Click(Sender: TObject);
var key, f2, f3: file of byte;
  buf1, buf2, buf3: byte;
  k: integer;
begin
  AssignFile(key, OpenDialog1.FileName);
  AssignFile(f2,  OpenDialog2.FileName);
  if  Savedialog1.Execute then
  begin
    AssignFile(f3, SaveDialog1.FileName);
    reset(key);
    reset(f2);
    rewrite(f3);
    while not eof(f2) do
    begin
      read(f2, buf2);
      k := buf2;
      seek (key, k);
      read(key, buf1);
      buf3 := buf1;
      write(f3, buf3);

    end;
    closefile(key);
    closefile(f2);
    closefile(f3);
  end;

Последний раз редактировалось AET; 27.06.2011 в 14:34.
AET вне форума Ответить с цитированием
Старый 28.06.2011, 15:42   #7
AET
Пользователь
 
Регистрация: 29.02.2008
Сообщений: 60
По умолчанию

привет всем подскажите как можно зделать обратное этого
Код:
procedure TForm2.Button4Click(Sender: TObject);
var key, f2, f3: file of byte;
  buf1, buf2, buf3: byte;
  k: integer;
begin
  AssignFile(key, OpenDialog1.FileName);
  AssignFile(f2,  OpenDialog2.FileName);
  if  Savedialog1.Execute then
  begin
    AssignFile(f3, SaveDialog1.FileName);
    reset(key);
    reset(f2);
    rewrite(f3);
    while not eof(f2) do
    begin
      read(f2, buf2);
      k := buf2;
      seek (key, k);
      read(key, buf1);
      buf3 := buf1;
      write(f3, buf3);

    end;
    closefile(key);
    closefile(f2);
    closefile(f3);
  end;
надо считать из файла байт и сравнить его с таблицеи если байты совподают то записываем в 3 файл адрес совпадении таблицы
Код:
procedure TForm2.Button3Click(Sender: TObject);
var key, f2, f3: file of byte;
  buf1, buf2, buf3: byte;
  k: integer;
begin
  AssignFile(key, OpenDialog1.FileName);
  AssignFile(f2,  OpenDialog2.FileName);
  if  Savedialog1.Execute then
  begin
    AssignFile(f3, SaveDialog1.FileName);
    reset(key);
    reset(f2);
    rewrite(f3);
    while not eof(f2) do
    begin
      read(f2, buf2);
      k := 0;
    while buf2 <> buf1 do  begin
      read(key, buf1);
      k := k + 1;
      end;
      write(f3, k);
      if eof(key) then Seek(key, 0);

    end;
    closefile(key);
    closefile(f2);
    closefile(f3);
  end;

end;

Последний раз редактировалось AET; 28.06.2011 в 16:14.
AET вне форума Ответить с цитированием
Старый 28.06.2011, 17:04   #8
AET
Пользователь
 
Регистрация: 29.02.2008
Сообщений: 60
По умолчанию

в чем ошибка можете подсказать
AET вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Тестовый файл. Найти сумму всех чисел, входящих в этот файл. (Паскаль) Homeros Помощь студентам 1 26.01.2011 14:05
Типизированный файл с натуральными числами. Числа, встречающиеся 1 раз переписать в другой файл [Паскаль] mifomen Помощь студентам 7 16.12.2010 22:00
WinInet загрузить файл во временной файл , использовать, потом удалить Человек_Борща Работа с сетью в Delphi 5 03.08.2010 13:46
C++. Прочитать файл и вывести в другой файл каждую N-ую строку Straiker Помощь студентам 3 15.12.2009 05:49
Ссылка на файл из текущей папки! Сбор инфы в один файл! mephist Microsoft Office Excel 11 10.07.2009 13:51