Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Шифрование файлов [D5, WinXP]


I am ©   (2005-12-15 18:28:00) 

Здравствуйте. Подскажите, плиз, каким образом осуществляют шифрование данных "умные" программы.
Я пытался, воспользовавшись компонентом HexEditor перекинуть код файла в мемо, там его обработать и вернуть данные в editor, но этот процесс занимает много времени. Понимаю, что способ этот один из самых нерациональных, и прошу у вас помощи в решении данного вопроса.
Заранее спасибо.


Dmitrij_K   (2005-12-16 11:47:00) [1]

например здесь есть > http://acedutils.narod.ru/


evvcom   (2005-12-16 09:06:00) [2]


> Пытаюсь методом научного тыка

Найди лучше примеры шифровальщиков и литературу, описывающую данные методы. Это будет полезнее.


konrads   (2005-12-16 07:03:00) [3]

Можно сделать так.
Делаем генератор псевдослучайной последовательности например такой:

Глобальная переменная
var Rec : Array[1..128] of byte;

// Функция при каждом новом вызове возвращает
// псевдослучайное число

function  TForm1.OutByte : byte;
var i,j : integer;
begin
 j := 0;
// Количество строчек написанных ниже, и индексы
// массива Rec определяет неповторимость псевдослучайной
// последовательности наряду с начальной инициализацией
// массива Rec
   j := j + Rec[2];
   j := j + Rec[10];
   j := j + Rec[15];
   j := j + Rec[16];
   j := j + Rec[21];
   j := j + Rec[28];
   j := j + Rec[33];
   j := j + Rec[41];
   j := j + Rec[49];
   j := j + Rec[56];
   j := j + Rec[64];
   j := j + Rec[87];
   j := j mod 255;
 for i := 127 downto 1 do rec[i+1] := rec[i];
 Rec[1] := j;
 result := j;
end;

// Начальная инициализация массива Rec
// Параметр S - наш ключ
Procedure TForm1.InitRec(S:String);
var i : integer;
begin
 for i := 1 to 128 do rec[i] := i;
 for i := 1 to Length(s) do Rec[i] := Byte(s[i]);
 for i := 1 to 128 do OutN;
end;

// Теперь могём пользоваться
// Данная процедура кодирует любой файл
// и декодирует ранее закодированый
// Form2 - имеет Кнопки открыть и сохранить
// открывающие соответственно OpenDialog
// и SaveDialog а также BitBtn1.Kind = bkOk
// и BitBtn1.Kind = bkCancel и Edi1 для ввода
// ключевого слова длинной не больше 128
Procedure Form1.CodeDecodeFile;
var F1,F2 : File of Byte;
    b: Byte;
begin
 Form2.ShowModal;
 if Form2.ModalResult <> mrOk then exit;
 InitRec(Form2.Edit1.Text);
 AssignFile(F1,Form2.OpenDialog1.FileName);
 AssignFile(F2,Form2.SaveDialog1.FileName);
 Reset(F1); Rewrite(F2);
 While not Eof(F1) do begin
    Read(F1,b);
    b := b xor OutByte;
    Write(F2,b);
 end;
 CloseFile(F1);
 CloseFile(F2);
end;


Vlad   (2005-12-15 19:16:00) [4]


> I am   (15.12.05 19:04) [4]

Один из вариантов - посимвольно, с помощью xor
Вот, например - простенько и со вкусом :-)
http://kladovka.net.ru/delphibase/?action=viewfunc&topic=strcode&id=10081


I am   (2005-12-15 19:04:00) [5]

2 Vlad: да, хотелось бы :)


Vlad   (2005-12-15 19:02:00) [6]


> I am   (15.12.05 18:51) [2]

А расшифровывать их потом надо?


I am   (2005-12-15 18:51:00) [7]

Описываю.
Пытаюсь методом научного тыка научиться шифровать файлы :).
Нашел способ указанный выше.
Интересуют уже существующие методы шифрования или же рекомендации по оптимизации вышеуказанного варианта...


Jeer   (2005-12-15 18:49:00) [8]

Начни с описания задачи.


Наверх

Титульная страница Поиск, карта сайта Написать письмо