Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.029 c
1-1107752017
dreamse
2005-02-07 07:53
2005.02.20
Как узнать что программа запущена с компакт диска ?


3-1106559184
axx
2005-01-24 12:33
2005.02.20
Координаты ячейки DBGrid а


1-1107534746
hamster
2005-02-04 19:32
2005.02.20
Вопрос по Turbo Pascal


3-1106296706
Colci
2005-01-21 11:38
2005.02.20
Помогите раскодировать .dbf файл


14-1106866890
Soft
2005-01-28 02:01
2005.02.20
Пятничная задачка. Кто такие эльфы?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский