Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #65, МАЙ 2004 г.

Шифруйся сам!

Alek Silverstone

Xakep, номер #065, стр. 065-110-4


AssignFile(InFile, OpenDialog.FileName);

Reset(InFile); //открываем исходный файл

AssignFile(OutFile, 'temp.$$$');

Rewrite(OutFile); //создаем временный файл

RC4Init(KeyEdit.Text);

while not eof(InFile) do begin

read(InFile, t); //читаем байт

t:=RC4GetCryptoByte(t); //шифруем байт

write(OutFile, t); //записываем байт

end;

// закрываем файлы

CloseFile(InFile);

CloseFile(OutFile);

DeleteFile(OpenDialog.FileName);

Rename(OutFile, OpenDialog.FileName);

end;

end;

Компилируем, запускаем. Вводим ключ, щелкаем по кнопке, выбираем файл (лучше текстовый и небольшой ;)). Потом открываем выбранный файл… и видим полную белиберду. Повторяем все еще раз - и видим изначальный текст. Можно себя поздравить.

Заканчиваем

Вот, собственно, и все. Этих начальных знаний вполне хватит для разграничения доступа к программе или для подобных вещей. Посмотри на название статьи - теперь твоя инфа надежно защищена, причем твоими собственными руками, а не PGP и иже с ним! Никакой бородатый дядя из ФБР не трогал твой алгоритм своими потными руками, никакой эксперт не добавлял люки в программу.

Если ты что-то не понял, сначала посмотри исходники - там есть некоторые комментарии. В случае чего пиши мне.

Выражаю благодарность Evil'у, чьи знания assembler'а помогли мне в написании этой статьи и не раз помогали в написании других проектов.

Операции MD5

procedure FF(var a, b, c, d, m :Longword; s:byte; t:Longword);

begin

a:=b+(rol((a+((b and c)or((not b) and d))+m+t),s));

end;

procedure GG(var a, b, c, d, m :Longword; s:byte; t:Longword);

begin

a:=b+(rol((a+((b and d)or(c and (not d)))+m+t),s));

end;

procedure HH(var a, b, c, d, m :Longword; s:byte; t:Longword);

begin

a:=b+(rol((a+(b xor c xor d)+m+t),s));

end;

procedure II(var a, b, c, d, m :Longword; s:byte; t:Longword);

begin

a:=b+(rol((a+(c xor (b or(not d)))+m+t),s));

end;

Глоссарий

Криптография - отрасль знаний, изучающая математические (!) методы преобразования информации, исключающие ее прочтение без знания ключа, а также методы обеспечения подлинности и целостности информации.

Ключ - последовательность символов, используемая в криптографических системах. Секретность ключа обеспечивает криптостойкость всей системы.

Алфавит - конечное множество используемых для кодирования информации знаков.

Текст - упорядоченный набор из элементов алфавита.

Симметричный шифр - шифр, в котором для шифрования и расшифровки используется один и тот же ключ.

Хеш-функция, функция хеширования - функция преобразования текста произвольной длины в число фиксированного формата.

Коллизия - пара текстов, имеющих одинаковое значение хеш-функций.

CD

На CD лежат полные исходники с комментариями. Я компилировал их на Delphi 7.

WWW

Если ты покупаешь журнал без диска, то ищи на сайте www.xakep.ru исходные коды в разделе Х-релиз.

WARNINIG

ОБЯЗАТЕЛЬНО прочитай это: www.myportal.ru/fapsi.txt и www.myportal.ru/rul1.txt. Незнание не освобождает!

WWW

http://theory.lcs.mit.edu/~rivest/

www.cryptography.ru

www.myportal.ru

INFO

Здесь нет люков для спецслужб, хакеров и прочих любопытных людей. Твоя прога – это твоя прога. Ты защитил ее сам.

Назад на стр. 065-110-3  Содержание