Данные надо беречь. Сам посуди, обидно, если открытие ценой в сто миллионов енотов или рецепт безалкогольной водки, над которым ты корпел три вечера в мрачном подвале нелегального компьютерного клуба, — уплывет к злостному ленивому конкуренту, который, пользуясь твоим похмельем, наложил грязную лапу на приватные дискеты с ценнейшей инфой?! Дальше можно не продолжать. Шифруем, шифруем, шифруем!..
Добрый дядюшка Borland предоставил нам несколько занятных функций для работы со строками, о которых не все знают. Сосредоточены они в модуле StrUtils.pas. Такие функции, как RightStr, LeftStr совмещают стандартные команды Copy и Delete: так, LeftStr возвращает значение левой части строки до указанной вами позиции (что вытворяет RightStr, догадайся сам), а функция ReverseString и вовсе делает зеркальное отображение данной строки: 321 вместо 123. Используем ее в особенности, чтобы осложнить жизнь хитрому дешифровщику.
Алгоритм шифрования будет прост, как Win 3.1. С каждым символом кодируемого документа проделаем следующее:
1. Преобразуем символ в число командой Ord.
2. Преобразуем каждый символ пользовательского пароля в число и сумму этих чисел прибавим к полученному в пункте 1.
3. От результата отнимаем число, равное позиции данного символа. То есть буковки будут шифроваться по-разному в зависимости от их позиции в строке :).
4. То, что получилось, запишем обратно из чисел в символы командой Chr. Как видишь, после всех наших манипуляций этот символ уже будет другим.
5. Запишем всю строку навыворот командой ReverseString.
Дешифровка, как ты догадываешься, будет производиться в обратном порядке.
Теперь, когда алгоритм намертво засел в голове, реализуем соответствующую программу. Внимание! Не исключено, что это будет первая твоя программа с настоящим синтаксисом команд:
<команда> <путь> <пароль>
— так будет выглядеть он в консоли нашего приложения (да, оно будет консольным!). Команд всего две: crypt и decrypt — соответственно зашифровать и дешифровать файл, путь к которому указывается после пробела, а затем — твой пароль. НЕ ЗАБУДЬ ЕГО! Предупреждаю совершенно серьезно. Запомнил? В бой!
Crypt C:file.txt linuxmustsurvive
— закодируем File.txt. Результат (зашифрованный текст) сохраниться в той же директории, что и исполняемый файл нашего приложения под именем Translated_File.txt.
Decrypt C:Translated_file.txt linuxmustsurvive
— дешифровка.
Реализовывается это вот как:
program Crypter;
{$APPTYPE CONSOLE}
uses
SysUtils,
StrUtils; //!!
var
F, //входящий файл
F1: TextFile; //результат (файл с переводом)
ToDo, FileName, PassW, Line, TranslatedFile: string;
position, IsCrypt: integer;
//находим сумму числовых значений символов пароля
function Password(Psw: string): integer;
var
i,res: integer;
begin
res:=0;
for i:=1 to Length(psw) do res:=res+ord(psw[i]);
result:=res;
end;
function Crypt(CryptStr: string): string;
var
s: string;
i: integer;
begin
if CryptStr<>EmptyStr then
for i:=1 to Length(CryptStr) do begin
s:=LeftStr(CryptStr,1);
CryptStr:=RightStr(CryptStr,Length CryptStr)-1);
//ШИФРОВКА:
s:=chr(ord(s[1])+Password(PassW)-i);
result:=result+s;
end;
result:=ReverseString(result);
end;
function Decrypt(DecryptStr: String): String;
var
i: integer;
s: String;
begin
DecryptStr:=ReverseString(DecryptStr);
if DecryptStr<>EmptyStr then
for i:=1 to Length(DeCryptStr) do begin
s:=LeftStr(DeCryptStr,1);
DeCryptStr:=RightStr(DeCryptStr,Length DeCryptStr)-1);
//ДЕШИФРОВКА:
result:=result+chr(ord(s[1])-password(PassW)+i);
end;
end;
begin
while true do begin
isCrypt:=0;
writeln(#10+'Crypter >'+#10);
//Какую команду ввел юзер?
readln(ToDo);
if UpperCase(ToDo)='EXIT' then Exit;
if AnsiContainsText(ToDo,'decrypt') then isCrypt:=1
else if AnsiContainsText(ToDo,'crypt') then isCrypt:=2;
//прочитав команду, удаляем ее из строки и читаем дальше
position:=pos(' ',ToDo);
if position>0 then ToDo:=RightStr(ToDo,Length(ToDo)-position);
//Читаем путь к файлу
position:=pos(' ',ToDo);
if position>0 then FileName:=LeftStr(ToDo,position-1);
//Читаем пароль
PassW:=RightStr(ToDo,Length(ToDo)-position);
//Всё правильно? Начинаем!
if (isCrypt<=0) or (PassW=EmptyStr) or (not FileExists(FileName)) then writeln('Wrong command')
else begin
TranslatedFile:=ExtractFilePath(paramStr(0)) + 'translated_' + ExtractFileName(FileName);
//соединяемся с файлами
AssignFile(F, FileName);
AssignFile(F1, TranslatedFile);
//переходим в начало файла
Rewrite(F1);
Reset(F);
//читаем строки, пока не дойдем до конца файла
while not EOF(F) do begin
//читаем из переводимого файла
ReadLn(F, Line);
if isCrypt=1 then Line:=Decrypt(Line);
if isCrypt=2 then Line:=Crypt(Line);
//записываем в файл с переводом
Writeln(F1, Line);
end;
//отсоединямся от файлов
CloseFile(F);
CloseFile(F1);
end;
end;
end.
Вот, собственно, и всё. Еще раз напоминаю, что результат (файл с переводом) сохранится В ТОЙ ЖЕ ДИРЕКТОРИИ, что и наше приложение, а не в той, где лежит исходный файл. В заключение процитирую отрывок из статьи «Криптография в C++» в номере 3.03 журнала «Хакер»:
(с) Николай «GorluM» Андреев
Но я хочу тебя предупредить: в нашей стране, согласно указу № 334 от 1995 года, производить и распространять любые шифрующие средства можно, только имея лицензию ФАПСИ. Соответственно, шифровать нельзя :). Поэтому пиши программы только для личного пользования и только в познавательных целях.
Другие работы по теме:
работа
Кинематографы создают удивительные спецэффекты или полностью анимированные фильмы. В последние годы широкое распространение получили также компьютерные игры, максимально использующие трехмерную графику для создания виртуальных миров
Вычисление значения функции y(x)
Особенности применения компьютерных программ Pascal, Excel, MathCAD и Delphi для вычисления значения функции y(x) с заданным промежутком и шагом. Виды результатов вычислений, их сравнение и вывод. Изображение блок-схемы алгоритма решения задания.
Визуальное программирование
Визуализация - это процесс графического отображения сложных процессов (в данном случае построения) на экране компьютера в виде графических примитивов (графических фигур).
Анимация без лишних усилий
Отличные результаты можно получить используя только функции WinAPI или возможности Delphi. Я рассмотрю несколько таких необычных возможностей, причем самый большой пример будет состоять из менее чем 10 (!) строк кода.
Описание файлов, создаваемых Дельфи
Вы когда ни будь задумывались о том, что создает Дельфи в папке с исходниками проекта? Да и нужен ли весь этот абсолютно бесполезный, для рядового программиста, "мусор"? Пора призадуматься. В этой мини-статье я расскажу о назначении таких файлов.
Установка компонентов в Дельфи
Если после установки компонента на форму возникли проблемы с компиляцией проекта, то это значит, что Delphi не может найти .pas файл компонента.
Реестр: записьчтение
Работа с системным реестром в Delphi достаточно простая. Использование реестра имеет некоторые преимущества перед INI-файлами. Они заключаются в том, что реестр - более стабильный, и у него нет ограничения на размер.
Шифрование PGP
«Шифрование. -ключ» Настройка размещения ключа ля настройки размещения ключей PGP в правом нижнем углу экрана нажмите на откройте пункт «Настройка…» (Options…) и
Математична модель вимірювальної системи в середовищі Delphi
Курсова робота Математична модель вимірювальної системи в середовищі Delphi АНОТАЦІЯ Опис програми містить загальний опис алгоритмів головної програми та допоміжних на рівні блок-схем, а також більш детальний опис розробленої програми на рівні програмного коду.
Створення таблиць за допомогою SQL-запитів в середовищі DELPHI
Створення таблиць за допомогою запитів в середовищі DELPHI Середовище Delphi широко використовується для програмування баз даних. Найчастіше, бази даних як певний підбір даних, організовані за допомогою таблиць. В реляційних базах даних таблиці представляють інформацію про об”єкти одного типу.
Программа на Delphi
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs; type TForm1 = class(TForm) private { Private declarations } public { Public declarations }
Середовище програмування DELPHI 2 0
СЕРЕДОВИЩЕ ПРОГРАМУВАННЯ DELPHI 2.0 Зміст Основні елементи середовища 1. Головне вікно 2. Вікно форми 3. Вікно коду 4. Інспектор об’єктів Управління файлами проекту Delphi
Анімація в Delphi 7 0
КУРСОВИЙ ПРОЕКТ з дисципліни Основи програмування та алгоритмічних мов На тему „Анімація в Delphi 7 ” Зміст 1.Вступ 2.Характеристика предметної області
Середовище програмування DELPHI 20
СЕРЕДОВИЩЕ ПРОГРАМУВАННЯ DELPHI 2.0 Зміст 5.Основні елементи середовища 2 a.1. Головне вікно 2 a.2. Вікно форми 2 a.3. Вікно коду 3 a.4. Інспектор об’єктів 3
Визуальное программирование в Delphi
Изучение методов визуального программирования в Delphi. Задание: Построить графики функций ; ; Текст программы: unit Graph; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Создание приложения Клавиатурный тренажер
Министерство образования и науки Украины Луганский национальный университет имени Тараса Шевченко Ровеньковский факультет Кафедра информационных технологий и систем
Oedipus Free Will Essay Research Paper The
Oedipus Free Will Essay, Research Paper The characters in the story are free to make their own choices in life. Laios, upon being told that his son will kill him and marry his wife, chooses to have him killed. If Laios had not been told this
Oedipus Rex Essay Research Paper Oedipus RexOedipus
Oedipus Rex Essay, Research Paper Oedipus Rex Oedipus was not composed by his fate; he was responsible for his own conduct. From his very birth Oedipus was predetermined to marry his mother and murder his father. His situation was inevitable. Although Apollo exhorted the prophecy in Delphi, this event only drove Oedipus to fulfill his destiny.
Oedipus Essay Research Paper The Excruciating Truth
Oedipus Essay, Research Paper The Excruciating Truth of Oedipus Oedipus is a man of integrity and passion whose goal in life was to seek the raw truth. Throughout the story, he constantly tried to obtain that
Interpretations Of Socrates
’s Definition Of Wisdom Essay, Research Paper . he went to Delphi at one time and ventured to ask the oracle he asked if any man was wiser than I, and the Pythian replied that no one was wiser 21b
Oedipus The Irony Essay Research Paper Oedipus
Oedipus The Irony Essay, Research Paper Oedipus the Irony In Sophocles’s Oedipus The King, Oedipus’s life was set for him. He learned through the Oracle of Apollo at Delphi, that during the span of his lifetime that he would kill his father and marry his mother. He was obviously concerned by this. Laius also received the same Oracle from Apollo.
Oedipus The King And His Fate Essay
, Research Paper Oedipus The King, by Sophocles, is a play about how Oedipus lives up his fate that he will kill his father and marry his mother, both of which are extremely bad in the Greek society, even though he thinks he is getting away from it. Despite the Greek notions of supreme power of the gods and fate, Oedipus’ downfall is primarily the result of King Laius? and his own actions and attempts to defy the gods, consequently Sophocles says that prophecies from the gods of someone?s fate should not be ignored.
Oedipus Rex Essay Research Paper In Sophocles 2
Oedipus Rex Essay, Research Paper In Sophocles? Oedipus Rex, dramatic irony is often present in Oedipus? long speeches. Oedipus constantly sees things incorrectly, and is in denial that he
Oedipus The King Essay Research Paper Even
Oedipus The King Essay, Research Paper Even though Oedipus the King didn?t detail all of Oedipus? adventures, I thought it was a good book. I think it was smart of Sophocles to pick out the most
Apollo 2 Essay Research Paper ApolloTable of
Apollo 2 Essay, Research Paper Apollo Table of Contents 1. Title Page 2. Table of Content 3. Apollo Report 4. Apollo Report 5. Story of apollo 6. Temple of Apollo ( Didyma, Turkey )
Шифры простой замены
ЛАБОРАТОРНАЯ РАБОТА №1 ШИФРЫ ПРОСТОЙ ЗАМЕНЫ 1. ШИФР ЦЕЗАРЯ В 1 в. н.э. Ю. Цезарь во время войны с галлами, переписываясь со своими друзьями в Риме, заменял в сообщении первую букву латинского алфавита (А) на четвертую (D), вторую (В) – на пятую (Е), наконец, последнюю – на третью: