Форум: "Основная";
Текущий архив: 2005.02.20;
Скачать: [xml.tar.bz2];
ВнизШифрование Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.039 c