Главная страница
    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.039 c
1-1107807336
GGGG123123
2005-02-07 23:15
2005.02.20
Как узнать где находиться exe моей пргораммы при её работе?


3-1106551428
Carter
2005-01-24 10:23
2005.02.20
BookMark и Filter конфликтуют. Помогите пожалуйста!


4-1105357078
Norny
2005-01-10 14:37
2005.02.20
Изменение обоев Рабочего стола


8-1098811987
Artemka
2004-10-26 21:33
2005.02.20
Проблема с выводом изображения на канву формы...


1-1107354569
aleks-ran
2005-02-02 17:29
2005.02.20
Значения Low и High в многомерных динамических массивах





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский