Крипто-форум crprogram.16mb.com

Програмування, Delphi, криптографія, криптоаналіз, шифри, вихідні коди, вирішення задач, приклади програм

Часовий пояс: UTC десь + 2 години




Розпочати нову тему Відповісти  [ 14 повідомлень ] 
Автор Повідомлення
 Заголовок повідомлення: Re: Програми для шифрування файлів
СообщениеДодано: 09 гру 2014, 20:48 
Не в мережі

Повідомлень: 502
Є декілька варіантів реалізації збереження файла:

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

І у будь-якому випадку існує проблема знищення копій вхідного файлу.
Щоб запобігти цьому використовують дискове шифрування.

Але так як наша мета тут побачити основи побудови програми для сучасних шифрів, то оберемо 2-й варіант.


Повернутися наверх
  
 
 Заголовок повідомлення: Програми для шифрування файлів
СообщениеДодано: 09 гру 2014, 20:48 
Не в мережі

Повідомлень: 502
Програми для шифрування файлів

Це клас прогам, які призначені для шифрування файлів.
(тобто будь-яких даних, які збережені у файлі - зображення, фото, програми, текстові файли, документи та інше).

Тут розглянемо один з методів побудови інтерфейсу, та розглянемо приклад програми з використанням сучаних алгоритмів шифрування.


Повернутися наверх
  
 
 Заголовок повідомлення: Re: Програми для шифрування файлів
СообщениеДодано: 09 гру 2014, 20:48 
Не в мережі

Повідомлень: 502
Нам знадобиться:
форма,
2 кнопки - зашифрувати/розшифрувати
OpenDialog, SaveDialog - для відкритття та збережння файла відповідно.
Edit - для введення пароля.


Повернутися наверх
  
 
 Заголовок повідомлення: Re: Програми для шифрування файлів
СообщениеДодано: 09 гру 2014, 20:48 
Не в мережі

Повідомлень: 502
Отримаємо вигляд:
Зображення


Повернутися наверх
  
 
 Заголовок повідомлення: Re: Програми для шифрування файлів
СообщениеДодано: 09 гру 2014, 20:48 
Не в мережі

Повідомлень: 502
Для шифру XOR:
Код:
var
  Form1: TForm1;
  paa:array[0..32]of byte;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
tvxi,tvux:file of byte;
i:integer;
FS,d0:integer;
a,b:byte;
begin
d0:=length(edit1.text);
for i:=1 to d0 do
paa[i-1]:=ord(edit1.text[i]);

OpenDialog1.InitialDir:= ExtractFileDir(Application.ExeName);
if opendialog1.execute then
begin
  assignfile(tvxi,opendialog1.FileName);
  reset(tvxi);
  FS:=filesize(tvxi);
      if savedialog1.execute then
      begin
      assignfile(tvux,savedialog1.FileName);
      rewrite(tvux);
      for i:=1 to FS do
        begin
          read(tvxi,a);
          b:=a xor paa[i mod d0];
          write(tvux,b);
        end;
        closefile(tvxi);
        closefile(tvux);
end;
end;
end;


Пароль задається виразом
paa[i-1]:=ord(edit1.text[i]);

вхідний файл
assignfile(tvxi,opendialog1.FileName);

результат:
assignfile(tvux,savedialog1.FileName);

Зчитування-шифрування-запис:
Код:
 
          read(tvxi,a);
          b:=a xor paa[i mod d0];
          write(tvux,b);


Повернутися наверх
  
 
 Заголовок повідомлення: Re: Програми для шифрування файлів
СообщениеДодано: 09 гру 2014, 20:48 
Не в мережі

Повідомлень: 502
Для інших шифрів - наступного разу.
залишайтесь з нами... :)


Повернутися наверх
  
 
 Заголовок повідомлення: Re: Програми для шифрування файлів
СообщениеДодано: 09 гру 2014, 20:48 
Не в мережі

Повідомлень: 502
Далі реалізуємо один з режимів блочних шифрів.
Оберемо для прикладу режим CBC.


Повернутися наверх
  
 
 Заголовок повідомлення: Re: Програми для шифрування файлів
СообщениеДодано: 09 гру 2014, 20:48 
Не в мережі

Повідомлень: 502
Використаємо функції BlockRead, BlockWrite;

Наприклад, довжина блоку 64 біт, тоді можна реалізувати так:

Змінні:
Код:
var
  Form1: TForm1;
  paa:array[0..95]of byte;
  tvxi,tvux:file of byte;

implementation

{$R *.dfm}


Процедура шифрування:

де
bss:=7; - розмір блоку = 8 байт =64 біт.
FS:=filesize(tvxi) div SizeBuf; - кількість блоків.
BlockRead(tvxi, Buf, SizeBuf); - зчитування блоку з вхідного файла.

Код:
procedure cipherCBC();
var
Buf, Buf0: Array [0..7] Of byte;
i,j,SizeBuf:integer;
FS,d0,bss:integer;
begin
bss:=7;
SizeBuf:=SizeOf(Buf);

d0:=length(form1.edit1.text);
for i:=1 to d0 do
paa[i-1]:=ord(form1.edit1.text[i]);

for i:=0 to bss do
Buf0[i]:=255;
BlockWrite(tvux, Buf0, SizeBuf);


FS:=filesize(tvxi) div SizeBuf;

for i:=1 to FS do
begin
BlockRead(tvxi, Buf, SizeBuf);
for j:=0 to bss do
Buf[j]:=Buf[j] xor Buf0[j];

////////////////////////////поки що тут ксор
for j:=0 to bss do
Buf[j]:=Buf[j] xor paa[j];
////////////////////////////

BlockWrite(tvux, Buf, SizeBuf);

for j:=0 to bss do
Buf0[j]:=Buf[j];

end;
end;



І код для кнопки:
Код:

procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
a,b:byte;
begin

OpenDialog1.InitialDir:= ExtractFileDir(Application.ExeName);
if opendialog1.execute then
begin
  assignfile(tvxi,opendialog1.FileName);
  reset(tvxi);
      if savedialog1.execute then
      begin
      assignfile(tvux,savedialog1.FileName);
      rewrite(tvux);

      cipherCBC();

      closefile(tvxi);
      closefile(tvux);
end;
end;
end;

end.

Так як наша мета зараз вивчити метод а не реалізувати "бойовий" шифр, то з вхідного файла відкинемо залишок.


Повернутися наверх
  
 
 Заголовок повідомлення: Re: Програми для шифрування файлів
СообщениеДодано: 09 гру 2014, 20:48 
Не в мережі

Повідомлень: 502
Далі перепишемо це все для сучасного шифру.


Повернутися наверх
  
 
 Заголовок повідомлення: Re: Програми для шифрування файлів
СообщениеДодано: 09 гру 2014, 20:48 
Не в мережі

Повідомлень: 502
У темі DES реалізація шифрування файлів у режимі CBC.


Повернутися наверх
  
 
 Заголовок повідомлення: Re: Програми для шифрування файлів
СообщениеДодано: 09 гру 2014, 20:48 
Не в мережі

Повідомлень: 17
Доброго дня! Можете підказати код програми на Delphi яка буде дишифровувати шифр CBC використовуючи введений ключ?


Повернутися наверх
  
 
 Заголовок повідомлення: Re: Програми для шифрування файлів
СообщениеДодано: 09 гру 2014, 20:48 
Не в мережі

Повідомлень: 502
У темі ДЕС
des-t31.html
у самому низу - останнє повідомлення - там архів з такою програмою.


Повернутися наверх
  
 
 Заголовок повідомлення: Re: Програми для шифрування файлів
СообщениеДодано: 09 гру 2014, 20:48 
Не в мережі

Повідомлень: 17
Дякую.


Повернутися наверх
  
 
 Заголовок повідомлення: Re: Програми для шифрування файлів
СообщениеДодано: 09 гру 2014, 20:48 
Не в мережі

Повідомлень: 3
Для інших шифрів - наступного разу.


Повернутися наверх
  
 
Показати повідомлення за:  Сортувати по:  
Розпочати нову тему Відповісти  [ 14 повідомлень ] 

Часовий пояс: UTC десь + 2 години



cron
Роwеrеd bу рhрВB® аnd Hostinger web hosting