Шифруйся сам! 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 Здесь нет люков для спецслужб, хакеров и прочих любопытных людей. Твоя прога – это твоя прога. Ты защитил ее сам. |