Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.02.20;
Скачать: CL | DM;

Вниз

Шифрование   Найти похожие ветки 

 
MMMx   (2005-02-06 21:39) [0]

Как сделать так чтобы во время не работы программы файл (10-100 МБ) был в зашифрованном виде (от шифрования требуется только чтобы рядовой пользователь не смог его открыть с помощью программы просмоторщика), а когда программа запускается, то расшифровывался.


 
Vit@ly ©   (2005-02-06 21:47) [1]

А в чем собственно проблема?
Зашифруй это файл раз и навсегда, любым понравившимся способом. А при обращении (чтении) к нему из программы, расшифровывай тем же способом


 
MMMx   (2005-02-06 22:34) [2]

Я это и хочу. Вот только я ни чего не понимаю в криптографии. Мне надо самый элементарный код шифрования, времени на изучение криптографии нет – нужно сдавать проект. Если не сложно дайте самый простой алгоритм шифрования файла или подскажите где найти.


 
begin...end ©   (2005-02-06 22:41) [3]

> [2] MMMx   (06.02.05 22:34)

Самый простой метод "шифрования" - простая замена символов в тексте. Например, на следующий в алфавите: "а" в исходном тексте заменяется на "б", и т.д. При расшифровке всё происходит в обратном порядке. Но такое шифрование защитит, наверное, только от детей :-)

Немного сложнее алгоритм шифрования с помощью логической операции xor. Там ещё понадобится где-то хранить ключ. Сделайте поиск в Яндексе по словам "шифрование xor". В Сети достаточно как примеров готового кода, так и теории этого метода.


 
Anatoly Podgoretsky ©   (2005-02-06 22:43) [4]

Элементарный код шифрования выгдядит например так A[i] := A[i] + 1


 
Defunct ©   (2005-02-07 02:37) [5]

MMMx   (06.02.05 22:34) [2]

и шифрование и расшифрование:

A[i] := A[i] XOR $FF;


 
ordik ©   (2005-02-07 02:46) [6]

var
i,j: integer;s:char;
begin
j:=0;
i:=1;
s:=" ";
lala:="A:\"+oo+".txt";
begin
AssignFile(a,lala);
{$I-}
Reset(a,1);

while not eof(a) do
begin
blockread(a,s,1);
if i>length(cryptmask) then i:=1;
s:=char(ord(s) xor ord(cryptmask[i]));
seek(a,j);
i:=i+1;
j:=j+1;
Blockwrite(a,s,1);
end;
CloseFile(a);
{$I+}
end;
end;


 
ordik ©   (2005-02-07 02:49) [7]

Файл может быть любой.


 
Defunct ©   (2005-02-07 03:03) [8]

ordik ©   (07.02.05 02:46) [6]

это типа конкурс кто медленнее зашифрует?
Зачем читать-то по одному байту?


 
ordik ©   (2005-02-07 03:13) [9]

> Defunct ©   (07.02.05 03:03) [8]
Код с незапамятных времен лежал в готовом виде :)


 
Defunct ©   (2005-02-07 03:25) [10]

ordik ©   (07.02.05 03:13) [9]

ну дык, пора уже его апгрейдить :)


 
ordik ©   (2005-02-07 03:30) [11]

Defunct ©   (07.02.05 03:25) [10]
Вот я к тому и приступил :)

MMMx   (06.02.05 21:39)
На всякий случай :)
var
cryptmask: string="любые символы"


 
Slym ©   (2005-02-07 05:25) [12]

А зачем все сразу расшифровывать?
Если используются потоки (TStream) лучше написать CryptoStreamAdapter (примочка к стреаму) в нем и расшифровывать.
Преимущества:
1. Файл всегда зашифрован.
2. Нетребуется долгая процедура расшифровки всего файла.
3. Шифровка/дешифровка по запросу (Read/Write)

Пример (псевдокод)

CryptoStreamAdapter =class(stream)
FStream:TStream;
function Read(...);override;
function Write(...);override;

constructor Create(Stream:TStream);oveeride;

Create;
begin
FStream:=Stream;
end;

function Read(Buf);override;
begin
inherited (Buf)
Decrypt(Buf);
end;

function Write(Buf);override;
begin
inherited (Buf)
Encrypt(Buf);
end;



Страницы: 1 вся ветка

Текущий архив: 2005.02.20;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.05 c
14-1106780098
VID
2005-01-27 01:54
2005.02.20
Токио (или Tokyo) - Индира Ганди.mp3


4-1104804484
Colonel
2005-01-04 05:08
2005.02.20
Службы/сервисы


3-1106209567
intaari
2005-01-20 11:26
2005.02.20
Доступ к параметрам UpdateSQL


3-1106462247
SeregaMan
2005-01-23 09:37
2005.02.20
Не могу убрать оконо запроса имени пользователя и пароля в TQuery


1-1107426172
Styles
2005-02-03 13:22
2005.02.20
Убрать заголовок