Форум: "Начинающим";
Текущий архив: 2006.01.01;
Скачать: [xml.tar.bz2];
ВнизШифрование файлов Найти похожие ветки
← →
I am (2005-12-15 18:28) [0]Здравствуйте. Подскажите, плиз, каким образом осуществляют шифрование данных "умные" программы.
Я пытался, воспользовавшись компонентом HexEditor перекинуть код файла в мемо, там его обработать и вернуть данные в editor, но этот процесс занимает много времени. Понимаю, что способ этот один из самых нерациональных, и прошу у вас помощи в решении данного вопроса.
Заранее спасибо.
← →
Jeer © (2005-12-15 18:49) [1]Начни с описания задачи.
← →
I am (2005-12-15 18:51) [2]Описываю.
Пытаюсь методом научного тыка научиться шифровать файлы :).
Нашел способ указанный выше.
Интересуют уже существующие методы шифрования или же рекомендации по оптимизации вышеуказанного варианта...
← →
Vlad © (2005-12-15 19:02) [3]
> I am (15.12.05 18:51) [2]
А расшифровывать их потом надо?
← →
I am (2005-12-15 19:04) [4]2 Vlad: да, хотелось бы :)
← →
Vlad © (2005-12-15 19:16) [5]
> I am (15.12.05 19:04) [4]
Один из вариантов - посимвольно, с помощью xor
Вот, например - простенько и со вкусом :-)
http://kladovka.net.ru/delphibase/?action=viewfunc&topic=strcode&id=10081
← →
konrads (2005-12-16 07:03) [6]Можно сделать так.
Делаем генератор псевдослучайной последовательности например такой:
Глобальная переменная
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;
← →
evvcom © (2005-12-16 09:06) [7]
> Пытаюсь методом научного тыка
Найди лучше примеры шифровальщиков и литературу, описывающую данные методы. Это будет полезнее.
← →
Dmitrij_K (2005-12-16 11:47) [8]например здесь есть > http://acedutils.narod.ru/
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.01.01;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.127 c